Java 怎么解析出图片中的ppt点击文字出现图片 要按顺序

o(╥﹏╥)o
页面找不到了
推荐阅读:java 如何读取附加到图片上的文字_百度知道
java 如何读取附加到图片上的文字
用java如何在一个图片上附加文字及读取到文字的信息,我现在是可以附加上,但是如何读取 还是没搞明白,求救高手来解决,十分感谢!
不是破解验证码,与验证码无关,我就是想在一张图片上附加一些文字,等到在其他地方在读取出来这些文字信息。
我有更好的答案
不能读取的把,要不然岂不就破解验证码了吗 pS:每种OCR引擎提供了其各自的SDK,并且每种都有详细的API使用说明。我曾经使用过文通(DLL,在VB中Declare)、Fujitsu(提供OCX控件)、ReadIRIS(OCX,不过VB调用用问题,使用VC++重新封装OK)。
简单以FUjitsu为例: 1、工程中引用组件Fujistu
TWIJOcr,将控制面板上出现的控件TWIJOcr添加到Form中 2、Form_load时初始化词典TWIJOcr1.CreateDictData 3、载入图像(可使用Kodak
Imaging控件imgedit显示图像) 4、设置总页、图像对象,使用控件方法RecogText识别,保存输出结果等:
TWIJOcr1.TotalPage
TWIJOcr1.ChangeCurrentPage
LoadPicture(inPict)
TWIJOcr1.RecogText
TWIJOcr1.SaveFileName
TWIJOcr1.SaveFileType
TWIJOcr1.SaveResult
采纳率:25%
如果文字是通过font或div浮在图片上的,那很好读取的啊,把dom元素innerHTML发到后台解析就可以了
1、如果是java的web开发,可以使用session来存储文字,等到需要取得时候从session里取出来就可以了,这个和java的验证码实现是一个道理2、如果想直接从图片上读取文字,java现有的技术是很难实现的,这个需要扫描技术,还需要写字库(把写到图片上的所有可能字都添加到字库里面)也可以百度搜索图片文字识别,将会有相关的资料供您查阅
图片上的文字是没法读取的,以为这涉及到图像处理。非常非常复杂!因为如果你非要读取图片上的文字,不是几行代码可以搞定的,首相从matlaB开始学,了解什么是图像处理。然后再开发相应的jar包。当然,你也可以使用相关的软件工具,比如识图软件,通过读取软件的反馈也算是读取了图片上的文字
基本上不可能,目前尚未成熟的技术来实现,你可以逐行逐像素扫描,然后对比,这是个算法问题。
有代码么发下
其他5条回答
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎么用java从文件中读取图片和写入图片到文件里_百度知道
怎么用java从文件中读取图片和写入图片到文件里
怎么用java从文件中读取图片和写入图片到文件里?最好给我代码,急,谢谢。
我有更好的答案
首先导入各种需要的包:import java.awt.Iimport javax.imageio.ImageIO;import java.io.*;读取图片的方法如下:Image[] array = new Image[10];Image image = ImageIO.read(new File(&d:\\source.gif&));//根据你实际情况改文件路径吧array[0] =图片读出来了。如果你有一个Image对象,想把它写入文件可以这样做:BufferedImage image = ImageIO.read(new File(&d:\\source.gif&));//要想保存这个对象的话你要把image声明为BufferedImage 类型ImageIO.write(image, &png&, new File(&f:\\test.png&));
楼下的答案有所欠缺,我这里有个比较完整的,也很简洁的方法,大家参考下import java.awt.Iimport java.awt.image.BufferedIimport java.awt.image.RenderedIimport javax.imageio.ImageIO;import java.io.*;public class image {public static void main(String []args)throws IOException{ Image[] array = new Image[10];Image image = ImageIO.read(new File(&c:\\supermaket1.jpg&));//这里是你要读取的图像文件array[0] =ImageIO.write((RenderedImage) image, &png&, new File(&f:\\test.txt&));//这里是你要写入的文件,如果不存在这个文件,那么系统会自动创建它}
为您推荐:
其他类似问题
您可能关注的内容
java的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&>&图片识别 根据图片解析出文字 OCR
图片识别 根据图片解析出文字 OCR
上传大小:51.01MB
图片识别 根据图片解析出文字 OCR 支持中文
综合评分:3
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有35条
无法使用,要么是图片格式不正确,要么就是看不懂的错误提示
识别率确实很好,谢谢了
识别率不高,有乱码
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
图片识别 根据图片解析出文字 OCR
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
mainstream_code
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
图片识别 根据图片解析出文字 OCR> 博客详情
摘要: Java 使用 Tess4J 进行 图片文字识别 笔记
最近的工作中需要使用到从图片中识别文字的操作,就在网上找到到Tess4j.那么,现在来总结一下使用中遇到的问题.
关于Tess4J简价:
http://tess4j.sourceforge.net/ (需要翻墙)
很简洁的项目主页.一个从Java角度使用JNA封闭的针对 Tesseract ORC 的开源项目,使用 &Apache License, v2.0 协议.支持TIFF, JPEG, GIF, PNG, and BMP image formats,Multi-page TIFF images,PDF document format.(支持Tiff是一个很大的亮点)
那就再了解一下 & Tesseract ORC.
https://code.google.com/p/tesseract-ocr/ &是一个Google支持的开源的OCR图文识别开源项目.去持多语言(当前3.02 版本支持包括英文,简体中文,繁体中文),支持Windows,Linux,Mac OSX 多平台.使用中Tesseract 的识别率非常高. ( 自己仅对数字,使用中图片清析的情况下没发生错误 )
网上传的代码示例大多是在Windows下安装Tesseract ORC后通过CMD命令操作进行图识别操作.而 Tess4j 针对Tesseract 提供了JNI支持,同时还提供了一些图片操作的工具类,提供比如图片放大,旋转,黑白处理,锐化 等用来提高识别率的操作.操作十分方便. Tess4j 简单到超乎想象,只是自己在使用环境比较特殊,遇到很多问题,这里一一道来.
tess4j.jar & Tess4j的本尊,用于Tesseract 的JNA支持,并提供相关操作工具类
jna.jar & & & 看到Tesseract 的第一反应是要用cmd或JNI来操作它,了解了一下 Tess4j 使用的JNA,有点JNI高级版的感觉,CMD什么的,玩蛋蛋去吧.
jai_imageio.jar & 图片操作的工具类,支持Tiff就靠它了. 它的 META-INF 里有文章,这个后面详说.
还有其它几个包,是用于操作PDF用的吧,没有引用,也没有发生错误.所以的包可以在 Tess4j 的文件目录里面找到.
2 操作代码.
官方的示例中给出了一个超级简单有效的示例,不足20行代码!!!我和小伙伴们都被震惊了!!!关键代码如下:
File&imageFile&=&new&File("eurotext.tif");
Tesseract&instance&=&Tesseract.getInstance();&&//&JNA&Interface&Mapping
String&result&=&instance.doOCR(imageFile);
实际使用中为了提高识别率还要对图片作一些处理来提高识别率,使用Tess4j 自带的工具类即可完成,这样识别率就大大的提高了.( 这里无法解决 验证码 中干扰线问题,干扰线的清理,网上有其它方式处理 )
//&这里对图片黑白处理,增强识别率.这里先通过截图,截取图片中需要识别的部分
BufferedImage&textImage&=&ImageHelper.convertImageToGrayscale(ImageHelper.getSubImage(panel.image,&startX,&startY,&endX,&endY));
//&图片锐化,自己使用中影响识别率的主要因素是针式打印机字迹不连贯,所以锐化反而降低识别率
//&textImage&=&ImageHelper.convertImageToBinary(textImage);
//&图片放大5倍,增强识别率(很多图片本身无法识别,放大5倍时就可以轻易识,但是考滤到客户电脑配置低,针式打印机打印不连贯的问题,这里就放大5倍)
textImage&=&ImageHelper.getScaledInstance(textImage,&endX&*&5,&endY&*&5);
3 使用中遇到的问题
3.1 相关DLL文件,相关字库文件
liblept168.dll,libtesseract302.dll 其中 liblept168.dll 要先加载.
tessdata 存放的是字库文件,如果需要数字,英文以外的支持需要 Tesseract 页面下载相关字库.
因为公司使用时是将文件打成Jar布署,然后提供客户端下载,所以就把以上两个文件一起打进tess4j.jar里面,然后客户端使用时 tessdata 直接可用,而 liblept168.dll,libtesseract302.dll 需要释放到临时目录然后加载.相关代码:
loadDLL("liblept168.dll");//注意加载先后顺序
loadDLL("libtesseract302.dll");//注意加载先后顺序
private&static&void&loadDLL(String&libFullName)&{
&&&&&&&&try&{
&&&&&&&&&&&&String&nativeTempDir&=&System.getProperty("java.io.tmpdir");
&&&&&&&&&&&&InputStream&in&=&
&&&&&&&&&&&&FileOutputStream&writer&=&
&&&&&&&&&&&&BufferedInputStream&reader&=&
&&&&&&&&&&&&File&extractedLibFile&=&new&File(nativeTempDir&+&File.separator&+&libFullName);
&&&&&&&&&&&&if&(!extractedLibFile.exists())&{
&&&&&&&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&&&&&in&=&Tesseract.class.getResourceAsStream("/"&+&libFullName);
&&&&&&&&&&&&&&&&&&&&Tesseract.class.getResource(libFullName);
&&&&&&&&&&&&&&&&&&&&reader&=&new&BufferedInputStream(in);
&&&&&&&&&&&&&&&&&&&&writer&=&new&FileOutputStream(extractedLibFile);
&&&&&&&&&&&&&&&&&&&&byte[]&buffer&=&new&byte[1024];
&&&&&&&&&&&&&&&&&&&&while&(reader.read(buffer)&&&0)&{
&&&&&&&&&&&&&&&&&&&&&&&&writer.write(buffer);
&&&&&&&&&&&&&&&&&&&&&&&&buffer&=&new&byte[1024];
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&in.close();
&&&&&&&&&&&&&&&&&&&&writer.close();
&&&&&&&&&&&&&&&&&&&&System.load(extractedLibFile.toString());
&&&&&&&&&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&&&&&}&finally&{
&&&&&&&&&&&&&&&&&&&&if&(in&!=&null)&{
&&&&&&&&&&&&&&&&&&&&&&&&in.close();
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&if&(writer&!=&null)&{
&&&&&&&&&&&&&&&&&&&&&&&&writer.close();
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&System.load(extractedLibFile.toString());
&&&&&&&&&&&&}
&&&&&&&&}&catch&(IOException&e)&{
&&&&&&&&&&&&logger.error("初始化&"&+&libFullName&+&"&DLL错误",&e);
3.2 相关异常
错误信息:null
错误详细堆栈信息:java.util.NoSuchElementException:&null
at:&javax.imageio.spi.FilterIterator.next(ServiceRegistry.java:808)
这个错误在开发环境下没有报错,但是在使用环境下出错,网上说出错原因是因为 &jai_imageio.jar 丢失.
如果在操作中遇到错误,很可能是这个原因,但是在前面的代码的工具类里使用了 &jai_imageio.jar ,如果报错,可能会报某类找不到的错误
自己这里显然不是.查看JDK中关于报错位置的代码,大概问题是因为注册的类没找到的原因.根据JDK文档的说明在 jai_imageio.jar 的 META-INF 的 service 包里面找到了相关的注册代码.分析了下,可能是因为金蝶EAS客户端使用自定义的类文件加载器,导至 META-INF 中的注册信息未能读取.这里手动注册一下.代码如下:
&&&&&&&&//&FUCK,客户端加载jar的方式很特殊,所以第三方包注册的serve&无法生效,这里就行动注册了,事儿真多
&&&&&&&&IIORegistry&registry&=&IIORegistry.getDefaultInstance();
&&&&&&&&//&registry.registerServiceProvider(new&ImageReadWriteSpi(),&OperationRegistrySpi.class);//这个,注册不了
&&&&&&&&registry.registerServiceProvider(new&ChannelImageInputStreamSpi(),&ImageInputStreamSpi.class);
&&&&&&&&registry.registerServiceProvider(new&ChannelImageOutputStreamSpi(),&ImageOutputStreamSpi.class);
&&&&&&&&//&---------
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.png.CLibPNGImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderCodecLibSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.wbmp.WBMPImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.bmp.BMPImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.pnm.PNMImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.raw.RawImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.tiff.TIFFImageReaderSpi(),&ImageReaderSpi.class);
&&&&&&&&//
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.png.CLibPNGImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageWriterCodecLibSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.wbmp.WBMPImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.bmp.BMPImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.gif.GIFImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.pnm.PNMImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.raw.RawImageWriterSpi(),&ImageWriterSpi.class);
&&&&&&&&registry.registerServiceProvider(new&com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriterSpi(),&ImageWriterSpi.class);
世界终于安静了.....
”在线下联结了各位 OSCer,推广开源项目和理念,很荣幸有你的参与~
领取条件:参与过开源中国“源创会”的 OSCer 可以领取
没遇到过,JNA报错的话多半可能跟DLL文件方面有关.看一下电脑上有没有安装Tesseract ORC
Tesseract ORC 本身很简单,觉得像很正常.这篇是两年前写的,现在写也差不多是这个样子
Tesseract ORC 本身很简单,觉得像很正常.这篇是两年前写的,现在写也差不多是这个样子那么你是作者咯
Tesseract ORC 本身很简单,觉得像很正常.这篇是两年前写的,现在写也差不多是这个样子引用来自“niniwei”的评论那么你是作者咯这里除了下厨房那个是因为爱好转发的,其它都是自己的工作笔记
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥}

我要回帖

更多关于 怎么解析图片上的文字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信