导航:首页 > 编程语言 > javaocr验证码

javaocr验证码

发布时间:2022-10-06 02:33:30

❶ 如何在windows上编译Tesseract OCR

最近要用java实现一个验证码识别系统,选了半天之后最终决定用Tesseract-OCR作为识别引擎。既然是java+Tesseract-OCR,自然就首选Tess4J。由于Tess4J直接且仅提供了编译成dll的3.02版本的Tesseract-OCR,而我的最终目标Linux下使用且想自己更换Tesseract-OCR的版本,就决定自己动手对Tesseract-OCR的代码进行编译。而这篇文章就是这次研究的中间产物。
虽然Tess4J目前支持的是Tesseract-OCR 3.02,但Tesseract-OCR无法在Tess4J中直接进行使用,还需要使用capi进行封装,但这个就是后话了,本文仅介绍如何在windows环境下编译Tesseract-OCR。

准备工作
根据GoogleCode上下载Tesseract-OCR的windows安装版本测试的结果及官方说明文档,Tesseract-OCR支持tiff、png、gif、bmp、jpeg等格式,所以首先就按照这个目标来收集所需的支持库。由于最终目标是在Linux下编译成功,所以我选择了msys+tdm-gcc来模拟Linux下的编译过程。

需要下载的库有:
1) zlib-1.2.7
2) libpng-1.5.10
3) giflib-4.1.6
4) libungif-4.1.4(这个似乎在最终的编译过程中没有起作用)
5) jpeg-8d
6) jbigkit-2.0
7) tiff-3.9.5
8) libwebp-0.1.3 9) leptonica-1.68

编译环境推荐使用最新的msys和tdm-gcc:
1) msys可以通过下载mingw-get-insta-20120426进行安装。
2) tdm-gcc推荐使用4.5.2版本。
Tesseract-OCR 3.02可以通过svn获取,地址是:http://tesseract-ocr.googlecode.com/svn/trunk
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

编译
本节所列出的为完整的编译过程及步骤顺序,请按照顺序进行。以下所述步骤均在msys+tdm-gcc4.5.2测试通过。执行命令前,请先解压缩,并进入解压缩后的目录。
zlib-1.2.7
解压后进入代码目录,执行以下命令: ./configure
make -f win32/makefile.gcc
make -f win32/makefile.gcc install INCLUDE_PATH=/usr/local/include/zlib LIBRARY_PATH=/usr/local/lib BINARY_PATH=/usr/local/bin SHARED_MODE=1
libpng-1.5.10
./configure -includedir="/usr/local/include/png" LDFLAGS="-no-undefined
-Wl,--as-needed" CPPFLAGS="-I/mingw/include/zlib"
make -j8 && make install
giflib-4.1.6
./autogen.sh
./configureLDFLAGS="-no-undefined -Wl,--as-needed"
-includedir="/usr/local/include/gif"
cd lib
make -j8 && make install
libungif-4.1.4
./autogen.sh ./configure LDFLAGS="-no-undefined -Wl,--as-needed"
-includedir="/usr/local/include/ungif"
cd lib
make -j8 && make install
jpeg-8d
./configure
LDFLAGS="-no-undefined
-Wl,--as-needed"
var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);
-includedir="/usr/local/include/jpeg"
make -j8 && make install
jbigkit-2.0
jbigkit由tiff组件所使用,虽不是必选项,但为了保证过程的完整这里也顺带一提。
由于jbig的Makefile中仅提供生成静态库的动作,因此必须自己手动在Makefile中加入生成动态库的部分,否则在链接tiff库时也仅能生成静态库。从而影响到leptonica的链接。
tiff-3.9.5
./autogen.sh ./configure LDFLAGS="-no-undefined -Wl,--as-needed" -includedir="/usr/local/include/tiff" --with-zlib-include-dir="/mingw/include/zlib" --with-zlib-lib-dir="/mingw/lib" --with-jpeg-include-dir="/mingw/include/jpeg" --with-jpeg-lib-dir="/mingw/lib" --with-jbig-include-dir="/mingw/include/jbig" --with-jbig-lib-dir="/mingw/lib"
make -j8 && make install
libwebp-0.1.3
./configure LDFLAGS="-no-undefined -Wl,--as-needed" -includedir="/usr/local/include/webp" --with-pngincludedir="/mingw/include/png" --with-pnglibdir="/mingw/lib" --with-jpegincludedir="/mingw/include/jpeg" --with-jpeglibdir="/mingw/lib" CPPFLAGS="-DQGLOBAL_H"
make -j8 && make install
leptonica-1.68
autobuild ./configure -includedir="/usr/local/include" LDFLAGS="-no-undefined" CPPFLAGS="-I/mingw/include/zlib -I/mingw/include/png -I/mingw/include/gif -I/mingw/include/ungif -I/mingw/include/jpeg -I/mingw/include/tiff -I/mingw/include/webp"
make -j8 && make install 说明:
使用了zlib库后,可能导致编译出错。这时请修改pngio.c: 在#include "png.h"后添加 #ifdef HAVE_LIBZ #include "zlib.h"

❷ java有读取图片里面文字的方法吗

使用tesseract-ocr,可以识别简单的验证码,中文没尝试过

❸ 如何用Java写一个爬虫

最近刚好在学这个,对于一些第三方工具类或者库,一定要看官方tutorial啊。

学会用chrome network 分析请求,或者fiddler抓包分析。

普通的网页直接用httpclient封装的API就可以获取网页HTML了,然后 JSoup、正则 提取内容。
若网站有反爬虫机制的,会需要构造User-Agent 伪装浏览器; 若有需要登录的,会传入cookie进去。

有些网页可能是利用ajax技术的,可以尝试PhantomJS拿到渲染后的HTML(然后步骤同上); 或者直接chrome network分析请求的URL以及传参,然后直接拿到json。

关于图片验证码的没尝试过,是不是要用到第三方ocr工具识别图片验证码然后作为URL参数,希望做过的童鞋告知。

❹ java如何提高百度文字识别的准确度

java文字识别程序的关键是寻找一个可以调用的OCR引擎。tesseract-ocr就是一个这样的OCR引擎,在1985年到1995年由HP实验室开发,现在在Google。tesseract-ocr 3.0发布,支持中文。不过tesseract-ocr 3.0不是图形化界面的客户端,别人写的FreeOCR图形化客户端还不支持导入新的 3.0 traineddata。但这标志着,现在有自由的中文OCR软件了。
java中使用tesseract-ocr3.01的步骤如下:
1.下载安装tesseract-ocr-setup-3.01-1.exe(3.0以上版本才增加了中文识别)
2.在安装向导中可以选择需要下载的语言包。
3.到网上搜索下载java图形处理所需的2个包:jai_imageio-1.1-alpha.jar,swingx-1.6.1.jar
4.java程序清单:
文字识别私有化部署方案
可部署至“本地服务器”的文字识别服务,支持主流 CPU/GPU 环境及国产化系统部署,通用场景、卡证、票据、iOCR 等各类 OCR 模型及自定义平台均可提供容器化部署包,在专有网络环境下一键部署应用,保障数据私密性。同时,可提供通用型一体机或国产化一体机,软硬一体交付,开箱即用,统一维保
快捷部署
容器化打包,支持本地物理机、私有云等多种部署方式,提供一键部署工具和常用运维工具,快速接入、高效运维
数据安全
专有网络环境下本地化部署,数据无需公网上传,实现业务网络公私分离,保障企业核心生产数据的私密性要求
适配广泛
CPU 及 GPU 环境均可部署,主流 GPU 显卡类型均已适配,并可支持国产化系统部署
授权灵活
根据QPS和使用期限进行授权,可自由选择不同QPS配置,灵活适应不同场景、不同业务的并发量需求
成为开发者
三步完成账号的基本注册与认证:
STEP1:点击网络AI开放平台导航右侧的控制台,选择需要使用的AI服务项。若为未登录状态,将跳转至登录界面,请您使用网络账号登录。如还未持有网络账户,可以点击此处注册网络账户。
STEP2:首次使用,登录后将会进入开发者认证页面,请填写相关信息完成开发者认证。注:(如您之前已经是网络云用户或网络开发者中心用户,此步可略过)。
STEP3:通过控制台左侧导航,选择产品服务-人工智能,进入具体AI服务项的控制面板(如文字识别、人脸识别),进行相关业务操作。
希望能帮到你,谢谢!

❺ 请教各位OCR读取验证码图片的方法

以目前的OCR技术来说,验证码还是做不了。
1,验证码的背景比较复杂,无法对图像进行二值化处理,即使处理也会把文字信息过滤
2、验证码的文字比较复杂,这本身就是为了防止自动识别验证,文字的方向和倾斜角度以及文字的构成笔画在处理上都会有技术难度

❻ tesseract ocr java 识别验证吗

按照说明,送入tesseract的图片的质量直接影响识别的效果,因此,简单的预处理是不可或缺的

1.首先灰度化,灰度值=0.3R+0.59G+0.11B:

Java代码

for (int y = minY; y < height; y++) {
for (int x = minX; x < width; x++) {
int rgb = srcImg.getRGB(x, y);
Color color = new Color(rgb); // 根据rgb的int值分别取得r,g,b颜色。
int gray = (int) (0.3 * color.getRed() + 0.59
* color.getGreen() + 0.11 * color.getBlue());
Color newColor = new Color(gray, gray, gray);
srcImg.setRGB(x, y, newColor.getRGB());
}
}

结果如图:

2.其次是灰度反转:

Java代码
for (int y = minY; y < height; y++) {
for (int x = minX; x < width; x++) {
int rgb = buffImg.getRGB(x, y);
Color color = new Color(rgb); // 根据rgb的int值分别取得r,g,b颜色。
Color newColor = new Color(255 - color.getRed(), 255 - color
.getGreen(), 255 - color.getBlue());
buffImg.setRGB(x, y, newColor.getRGB());
}
}

结果如图:

3.再次是二值化,取图片的平均灰度作为阈值,低于该值的全都为0,高于该值的全都为255:

Java代码
for (int y = minY; y < height; y++) {
for (int x = minX; x < width; x++) {
int rgb = buffImg.getRGB(x, y);
Color color = new Color(rgb); // 根据rgb的int值分别取得r,g,b颜色。
int value = 255 - color.getBlue();
if (value > average) {
Color newColor = new Color(0, 0, 0);
buffImg.setRGB(x, y, newColor.getRGB());
} else {
Color newColor = new Color(255, 255, 255);
buffImg.setRGB(x, y, newColor.getRGB());
}
}
}

结果如图:

看看效果还凑合,就省却尺寸调整、中值滤波以及噪点去除等步骤了。

以上完成图片预处理工作;Tesseract没有开放api,纯命令行调用:

Java代码
List<String> cmd = new ArrayList<String>(); // 存放命令行参数的数组
cmd.add(tessPath + "\\tesseract");
cmd.add("");
cmd.add(outputFile.getName()); // 输出文件位置
cmd.add(LANG_OPTION); // 字符类别
cmd.add("eng"); // 英文,找到tessdata里对应的字典文件。
ProcessBuilder pb = new ProcessBuilder();
pb.directory(imageFile.getParentFile());

cmd.set(1, tempImage.getName()); // 把图片文件位置放在第一个位置

pb.command(cmd); // 执行命令行
pb.redirectErrorStream(true); // 通知进程生成器是否合并标准错误和标准输出,把进程错误保存起来。
Process process = pb.start(); // 开始执行进程

int w = process.waitFor(); // 当前进程停止,直到process停止执行,返回执行结果.

结果输出表示一切正常

当然,真正要用好tesseract-ocr,还需用到其强大地训练工具,就是后话了……

❼ java怎么自己做一个orc身份证识别

是OCR文字识别技术来识别身份证吧。OCR识别身份证的话,会涉及到数字识别,中文识别,英文识别的。数字和英文相对比较好识别。中文麻烦一些。目前市场上有一个开源的,tesseract识别效果稍微比较好。楼主可以试一试。tesseract是C++做的,java可以使用JNI调用C语言的。如果楼主不差钱,并且识别效果要求高的话,建议使用第三方的识别软件。楼主可以和取得联系。希望帮助到楼主,希望采纳,谢谢!

阅读全文

与javaocr验证码相关的资料

热点内容
王的命令在线观看全集 浏览:927
西安市社保卡APP叫什么 浏览:605
怎么关掉华为手机自动更新app 浏览:906
韩国19禁 浏览:180
有部电影叫什么长生 浏览:458
磁盘加密的过程中能使用吗 浏览:352
用乐高拼一个小小的解压球 浏览:22
显示服务器读取超时怎么办 浏览:501
残芯twrp解压密码 浏览:162
数控车智能编程 浏览:979
php正则表达式匹配任意字符 浏览:320
在文件夹什么word文档 浏览:991
刺激爱情片 浏览:644
电影迷途少女微笑片段 浏览:722
现在还有什么网站能看 浏览:161
韩国电影在哪个视频看 浏览:808
android观察者模式使用 浏览:567
服务器03系统和08有什么区别 浏览:723
程序员都是如何自学的 浏览:938
迅雷影院类似的网站 浏览:492