添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

经过这么多年的技术发展,ocr文字识别技术依然步入正轨,不过知识就是财富,要想精准的识别还是得购买大公司的成熟技术,已知的有阿里ocr、腾讯ocr、百度ocr、搜狗ocr、有道ocr等等,本次就说说有哪些开源的ocr

1.Google开源OCR Tesseract

Tesseract 是一个 开源的OCR引擎,由 Google 赞助。Tesseract 是目前公认最优秀、最精确的开源 OCR 系统,除了较高的精确度外,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体,也可以识别出任何 Unicode 字符。
不过说实话,没有经过训练得Tesseract语言库识别率真的不怎么样,大概有30%的样子吧。
maven依赖

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.4.0</version>
</dependency>

下面说一下如何提高识别率

  1. Tesseract 更新到4.0以上版本
  2. 图像前处理
    做好图片的二值化
    合理的降噪
    图片resize
    图片旋转到合适的角度
    图片切割
    具体如何操作就不一一描述了
  3. 通过训练字库来提高识别率
    重点说一下Tesseract训练方法,虽然有点繁琐,但这个才是提高识别率的主要方向
    1.安装 jTessBoxEditor
    2.【train.bat】打开 jTessBoxEditor >【Tools】>【Merge TIFF】
    第一步
    第二步
    注意:tif文面命名格式[lang].[fontname].exp[num].tif
    lang是语言,fontname是字体,num为自定义数字
    3.保存为 num.font.exp1.tif
    4.运行以下命令生成.box文件
tesseract num.font.exp1.tif num.font.exp1 batch.nochop makebox

6.在文件夹文件夹内,新建一个文本文件,名为font_propertie,用记事本打开,写入内容为: font 0 0 0 0 0(可根据需求调整)
7.打开 jTessBoxEditor>【BOX Editor】> 【Open】,打开num.font.exp0.tif;矫正【Char】上的字符
第七步
打开tif文件时,会自动加载它的.box文件
8.点击save保存
9.运行cmd命令

echo Run Tesseract for Training.. 
tesseract.exe num.font.exp1.tif num.font.exp1 nobatch box.train 
echo Compute the Character Set.. 
unicharset_extractor.exe num.font.exp1 
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp1.tr 
echo Clustering.. 
cntraining.exe num.font.exp1.tr 
echo Rename Files.. 
rename normproto num.normproto 
rename inttemp num.inttemp 
rename pffmtable num.pffmtable 
rename shapetable num.shapetable  
echo Create Tessdata.. 
combine_tessdata.exe num. 
echo. & pause

运行这个命令会在生成许多文件,其他的不用管,我们只需要 .trainddata文件就够了
10.拷贝 num.trainddata 文件至tesseract-ocr的tessdata目录下,然后就可以使用训练生成的语言包进行图像文字识别了。

2.Java调用百度OCR文字识别API

虽说百度ocr也是付费,但是比其他良心一点,如果访问量小的话,可以考虑一下。因为它有50000次/日的免费次数
百度ocr免费次数

首先你需要进入百度ai开放平台并且登录进去(百度账号)
创建应用
创建一个新的应用,表单随便填写
在这里插入图片描述
创建成功后,你就可以看到自己的APP_ID、API_KEY、SECRET_KEY
这三个参数很重要!用来获取token
在这里插入图片描述
然后就可以通过百度API文档在你的代码中调用了
下面取自api中

	public static final String APP_ID = "你的APP_ID ";
    public static final String API_KEY = "你的API_KEY ";
    public static final String SECRET_KEY = "你的SECRET_KEY ";
    private static String test() {
    	// 初始化一个AipOcr
        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);
        // 可选:设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
        // 可选:设置代理服务器地址, http和socket二选一,或者均不设置
//        client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
//        client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理
        // 可选:设置log4j日志输出格式,若不设置,则使用默认配置
        // 也可以直接通过jvm启动参数设置此环境变量
        //System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");
        // 调用接口
        String path = "D:\\image.jpg";
        JSONObject res = client.basicGeneral(path, new HashMap<String, String>());
        JSONArray jsonArray = res.getJSONArray("words_result");
        String content = "";
        for (int j = 0; j < jsonArray.length(); j++) {
            JSONObject jObj = jsonArray.getJSONObject(j);
            content += jObj.getString("words").trim()+"\n";
        //System.out.println(res.toString(2));
        //System.out.println(content);
		return content;

不过要注意的是,由于是免费的所以有着QPS限制,也就是说一秒内只能访问两次,超出会识别失败的

3.上帝之眼sikulix—ocr

sikulix上帝之眼是支持ocr的,其底层是tesseract的实现。
比tesseract稍微好一点的是,sikulix是封装过的,可以使用api调用
由于它的底层是tesseract,所以我也并没有过多的去了解,tesseract的识别率都不怎么样,更何况是sikulix呢,不过想来应该比自己摸索tesseract简单一点吧
给大家一个链接有兴趣的可以去了解一下
SikuliX 使用笔记
在这里我也不多说了。

4.ocr文字识别软件源码

这是我在了解ocr的时候,发现的一款基于java的ocr文字识别软件的源码,可以单独运行识别,也可取其核心代码来使用,经测试识别效果挺不错的。
识别度较高的ocr文字识别软件源码

目前开源的ocr实在是太少了,如果需要识别的是英文或数字验证码之类的,推荐使用Tesseract,虽然中文识别不怎么样,但是其他语言还是蛮不错的。中文的话,如果需求不大,可以试一下百度ocr。如果需求比较大,还要求精确度高,那也只能购买成熟的技术了,毕竟知识就是财富呀

关于现阶段java调用OCR文字识别技术的总结1.Google开源OCR Tesseract下面说一下如何提高识别率2.Java调用百度OCR文字识别API3.上帝之眼sikulix—ocr4.ocr文字识别软件源码总结一下经过这么多年的技术发展,ocr文字识别技术依然步入正轨,不过知识就是财富,要想精准的识别还是得购买大公司的成熟技术,已知的有阿里ocr、腾讯ocr、百度ocr、搜狗ocr、有道ocr等等,本次就说说有哪些开源的ocr1.Google开源OCR TesseractTesserac
ocr的意思是识别图片中的文字,目前国内的话,有百度ai提供的服务,但是是收费的。国外有开源的tesseract。sikulix上帝之眼也支持ocr,底层是tesseract的实现。这两者都是免费的。         sikulix的ocr搭建比较坑,这里记录一下踩过的坑。应为ocr并不是直接安装好就可以用,这里试了好久才发现如何搭建才能正常使用         1、如果之前安装了sikuli
Tess4j最新中文库,tess4j中文语言库,高精准,高效率最新的中文语言库,Tess4j的高精准中文语言包(识别中文)。 本文以一张简单的图片为例:图片放置在E:/App/TestTess4/src/main/resources/bbb.png,因此使用代码测试前需要修改代码中指定的两个路径!!! 包中有完整的工具类,以及最新中文字库,除手写体无法识别外,其余无压力! 欢迎各位java老铁支持一下!
由于网上很多算法, 以及语言库无法做到精准识别, 所以综合条件下 使用了一款 space OCR API 的产品进行使用, 每个月有25000条的 使用额度, 日常使用或开发绰绰有余 网址链接 : https://ocr.space/OCRAPI 一. 注册 API 秘钥 1. 进入网址点击下面的注册链接输入自己的邮箱以及开发用途就会收到一个秘钥 2. 注册好的API如下 二. API解析 1. 上传方式选择 通过阅读API 文档我们可以得知, 发
package ocr; import net.sourceforge.tess4j.ITesseract; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.IOException; ocr测试.
ORC图像识别技术JAVA实现目前网络上的开源的图像识别技术有很多,例如 OCRE(OCR Easy)、Clara OCROCRAD、TESSERACT-OCR 等等,今天本blog将记录下tesseract-ocrJAVA实现,后面会记录研究下Android的使用: TESSERACT-OCR安装 1、TESSERACT-OCR安装首先下载EXE安装包进行安装,我安装的版本是“te
// need to also select option 1 Jyphon even if you only want to install tesseract, if will popup msg to reuse the downloaded jar // lib is download to /Users/xxx/Library/Applicatoin Support...
OCR(Optical Character Recognition,光学字符识别)是一种将印刷体字符转换为电子文本的技术。要实现OCR文字识别技术,通常需要以下步骤: 1. 收集图像:首先,需要收集包含要识别的文字的图像。这可以是照片、扫描件或屏幕截图等。 2. 图像预处理:接下来,需要对图像进行预处理,以提高文字识别的准确性。这包括去除噪声、图像增强、灰度化和二值化等。 3. 分割字符:OCR系统需要将文本图像中的字符分割出来,这是通过字符间的间隔来实现的。这个步骤的目的是将每个字符提供给OCR引擎进行单独识别。 4. 文字识别OCR引擎使用算法将字符识别为文字。 OCR引擎可以使用模板匹配、神经网络和深度学习等技术识别字符。 5. 后处理:最后,可以进行后处理步骤以提高识别准确性。这包括拼写检查和词语纠正等。 要实现OCR文字识别技术,可以使用开源OCR引擎(如Tesseract,OCRopus等),或使用商业OCR软件(如Adobe Acrobat等)。如果需要特定的OCR解决方案,可能需要使用深度学习框架(如TensorFlow,PyTorch等)和计算机视觉技术