Tesseract OCR识别小结

由于业务场景需要,需要接入OCR图像识别功能,记录一下经过几天的研究过程。

1、项目主页

http://code.google.com/p/tesseract-ocr/

基本上涵盖了所有内容,download、wiki尤其重要,上面有许多知识


2、安装

http://code.google.com/p/tesseract-ocr/downloads/list下载exe安装程序安装即可;


3、字库训练

由于OCR识别必须要有字库,google提供了需要语言的字库,在download页面中,用于识别中文的字库tesseract-ocr-3.02.chi_sim.tar.gz非常不好用,识别率极低,因此需要自建字库训练。

具体流程如下:

(3-1)生成tif+box模板;

tif为字库图片,本文模板:vie.arial.exp0.tif,见附件;

box文件为字库描述文件,本文模板:vie.arial.exp0.box,格式为:

0 102 4857 122 4889 0
1 134 4857 147 4889 0

2 159 4857 180 4889 0

3 188 4857 205 4889 0

box文件会划定一个图片的矩形区域,指明其描述的含义:

[字符含义] [minx] [miny] [maxx] [maxy] [page_num]

核心思想是:通过tif图片生成图形,用box文件描述图形,共同生成模板。


(3-2)JTessBoxEditor自动化工具

从第一步可以看出,训练字库有一定成本,我们需要生成一个tif图片。然后还要用Tesseract生成对应的box文件。为了保证box文件正常,还需要手动编辑box文件,对其进行纠正。因此就有了JTessBoxEditor的产生,项目主页:

http://vietocr.sourceforge.net/training.html

有3大功能:

1、合并多个tif文件;

2、图形化纠正box文件;

3、根据文字,自动生成tif文件+box文件;

目前主要用到第3个功能。可以直接运行jar包执行JTessBoxEditor。推荐直接使用JTessBoxEditor提供的api接口:

        TiffBoxGenerator generator = new TiffBoxGenerator(text,font,5000, 5000);

        generator.setOutputFolder(new File("D:\\workspace\\demo\\test2"));
        generator.setFileName("vie.arial.exp0.tif");
        generator.setTracking((float) 0.1);
        generator.create();

指明需要生成的文本内容,字体,图片宽、图片高,run即可;


(3-3)编辑vie.font_properties

指明字体支持的类型,例如改字体是否支持“粗体”、“斜体”、“下划线”等,本例默认不支持,内容如下,文件见附件:

arial 0 0 0 0 0


(3-4)训练

具体训练脚本资料较多,不再论述,原理见:
http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3

本例提供一个train.bat文件,将vie.arial.exp0.tif、vie.arial.exp0.box、vie.font_properties、train.bat放在同一目录,执行train.bat即可

将生成的字库vie.traineddata复制到tessdata下


(3-5)识别

执行

tesseract.exe  in_put out_put -l vie 即可

-l vie 表明使用vie.traineddata字库


4、参数配置

tesseract.exe  in_put out_put -l vie my_config

表明加载my_config配置文件,tesseract提供了多大600+配置项,每个具体配置项作用:

http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version

描述非常不详细,根据指点:

http://code.google.com/p/tesseract-ocr/wiki/ControlParams

在my_config中加上:

enable_new_segsearch 0 

可以解决一个中文字符被识别成两个的问题

加上:

tessedit_write_images  1
在执行识别后,可以看到二值化的图片:tessinput.tif

其他参数明显作用暂时未知;

5、ViewerDebugging
具体功能:
http://code.google.com/p/tesseract-ocr/wiki/ViewerDebugging
在win32上使用遇到一只报:
waiting for server的问题,解决方法如下:

1、下载piccolox-1.2.jar、piccolo-1.2.jar ,看清楚了。是
piccolox-1.2.jar、piccolo-1.2.jar中
2、
2、I Run “new ScrollView().main(new String[]{"8461"});” in IntelliJ ,and add “piccolox-1.2.jar” and “piccolo-1.2.jar” as library;
3、Than I run "tesseract phototest.tif test1 segdemo inter",the  ViewerDebugging  is showed;



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要提高Tesseract OCR识别率,可以尝试以下几种方法: 1. 使用更高质量的图像:Tesseract OCR对图像质量要求较高,因此使用更高分辨率、更清晰的图像可以提高识别率。 2. 优化图像预处理:在进行OCR之前,可以对图像进行预处理,如去除噪声、平滑图像等,以提高识别率。 3. 调整识别参数:Tesseract OCR有许多可调参数,如语言模型、字符集、字体等,可以根据实际情况进行调整,以提高识别率。 4. 增加训练数据:Tesseract OCR可以通过增加训练数据来提高识别率,可以使用已有的数据集或自己收集数据进行训练。 5. 使用其他OCR引擎:如果Tesseract OCR无法满足需求,可以尝试其他OCR引擎,如ABBYY FineReader、Adobe Acrobat OCR等。 ### 回答2: Tesseract OCR是一款开源的OCR引擎,在OCR识别中应用非常广泛。但是,它的识别率并不总是最优的,因此需要一些技巧来提高它的识别率。以下是一些技巧: 1. 图像预处理:在使用Tesseract OCR进行识别之前,可以先对图像进行一些预处理,例如旋转、去噪等。这样可以提高图像的质量,从而提高识别率。 2. 字符集:Tesseract OCR支持多种语言和字符集,因此在进行识别时应选择正确的语言和字符集。如果选择了错误的语言和字符集,识别率可能会很低。 3. 字符大小和字体:字体大小和字体类型对于识别率也有很大影响。为了获得更好的识别率,可以尝试使用不同的字体和大小进行识别测试,并选择最适合的字体和大小。 4. 训练模型:如果Tesseract OCR不能很好地识别特定的字体或语言,可以使用训练模型来提高识别率。训练模型需要使用一些训练图像和识别结果,以便Tesseract可以学习如何更好地识别这些字符。 5. 字典和术语表:如果OCR识别所需的术语和单词比较特殊,可以创建自定义的字典和术语表。这样Tesseract就可以更好地识别这些词汇,从而提高识别率。 总之,为了提高Tesseract OCR识别率,需要进行一系列的技巧和处理。在实际应用中,需要根据不同的需求选择合适的技巧和方法,以获得最佳的识别效果。 ### 回答3: Tesseract OCR是一款开源OCR引擎,是Google公司从HP公司中收购的OCR技术,并基于该技术开发而来的。Tesseract OCR在业内有着较高的声誉,并被广泛应用于文本识别及数字化处理领域。尽管Tesseract OCR识别中文等复杂语言上的表现不及商业OCR引擎,但在英文和数字的识别上表现出色。如何提高Tesseract OCR识别率,应该采取以下措施: 1. 提高图像清晰度:Tesseract OCR对图像的清晰度要求高,图像清晰度低会导致识别率下降。因此,要提高图像清晰度,可以通过更改扫描分辨率、扫描参数和摄像机设置等来实现。 2. 优化预处理:识别前需要对原图进行预处理操作,包括二值化、去除干扰线条等。通过工具软件可以获得更好的预处理效果。 3. 选择合适的训练集:可以根据识别的对象,在训练集中选择合适的字体、字型等。同时,也可以对需要识别的对象进行标注,让Tesseract OCR知道这些文字,从而提高识别率。 4. 优化识别参数:可以通过更改Tesseract OCR的参数来提高识别率。这些参数包括识别文本的最小高度、间距、字母的最小数量等。 5. 引入语言模型:Tesseract OCR识别率可以通过引入语言模型来提高,这可以让识别文字更加准确。可以使用语言模型训练工具,制作专业的语言模型。 综上所述,提高Tesseract OCR识别率需要从多个方面入手。只有通过科学的算法和有效的技术手段,才能够提高Tesseract OCR识别效果,实现更加准确和高效的 OCR 识别

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值