光学字符识别引擎 tesseract-尊龙官方平台

光学字符识别引擎 tesseract-ocr 样本训练

el/2024/3/25 18:43:26

光学字符识别引擎 tesseract-ocr 样本训练

https://www.cnblogs.com/cnlian/p/5765871.html

tesseract-ocr的简单使用与训练

tesseract,一款由hp实验室开发由google维护的开源ocr(optical character recognition , 光学字符识别)引擎,与microsoft office document imaging(modi)相比,我们可以不断的训练的库,使图像转换文本的能力不断增强;如果团队深度需要,还可以以它为模板,开发出符合自身需求的ocr引擎。

源码地址为:https://github.com/tesseract-ocr/tesseract;

exe可执行文件地址:http://download.csdn.net/download/whatday/7740469;

接下来,我们将在windows环境下安装tesseract并实现简单的转换和训练:

1、tesseract实现

大体流程:tesseract安装 -> 打开命令行 -> 生成目标文件

tesseract安装

下载tesseract-ocr-setup-3.02.02.exe安装包,安装成功后会在相应磁盘下有tesseract-ocr文件夹,如图

 

打开命令行

打开命令行,输入tesseract,回车;以下便是tesseract的大体面貌:

 

生成目标文件

先准备一张图片文件,如test.png

 

将命令行切换至目标图像文件目录,比如我们转换文件为test.png(图片文件允许多种格式),位于c:\users\lian\desktop\test;然后在命令行中输入

tesseract test.png output_1 –l eng

【语法】:  tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

imagename为目标图片文件名,需加格式后缀;outputbase是转换结果文件名;lang是语言名称(在tesseract-ocr中tessdata文件夹可看到以eng开头的语言文件eng.traineddata),如不标-l eng则默认为eng。

 

打开文件output_1.txt,发现tesseract成功的将图像转换成152408

 

可喜可贺,说明老牌名将tesseract还是很强的!但是还是有点不够准确,那么我们有没有什么办法能提高tesseract识别字符准确率呢?接下来,我们将使用配套训练工具jtessboxeditor来训练样本,来提高我们的准确率!

 

2、tesseract训练:

大体流程为:安装jtessboxeditor -> 获取样本文件 -> merge样本文件 –> 生成box文件 -> 定义字符配置文件 -> 字符矫正 -> 执行批处理文件 -> 将生成的traineddata放入tessdata中

安装jtessboxeditor

下载jtessboxeditor,地址https://sourceforge.net/projects/vietocr/files/jtessboxeditor/;解压后得到jtessboxeditor,由于这是由java开发的,所以我们应该确保在运行jtessboxeditor前先安装jre(java runtime environment,java运行环境)。

获取样本文件

我们可以用画图工具绘制样本文件,数量越多越好,我自己画了5张图,如图:

【注意】:样本图像文件格式必须为tif\tiff格式,否则在merge样本文件的过程中会出现 couldn’t seek 的错误。

 

 

 

merge样本文件

打开jtessboxeditor,tools->merge tiff,将样本文件全部选上,并将合并文件保存为num.font.exp0.tif

生成box文件

打开命令行并切换至num.font.exp0.tif所在目录,输入,生成文件名为num.font.exp0.box

tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox

【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox  

lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。

定义字符配置文件

在目标文件夹内生成一个名为font_properties的文本文件,内容为

font 0 0 0 0 0  

【语法】:       

fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用。

字符矫正

打开jtessboxeditor,box editor -> open,打开num.font.exp0.tif;矫正上的字符,记得有好多页噢!

 

修改后记得保存。

执行批处理文件

在目标目录下生成一个批处理文件

复制代码
rem 执行改批处理前先要目录下创建font_properties文件 
echo run tesseract
for training.. tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train echo compute the character set.. unicharset_extractor.exe num.font.exp0.box mftraining -f font_properties -u unicharset -o num.unicharset num.font.exp0.tr echo clustering.. cntraining.exe num.font.exp0.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
复制代码

保存后执行即可,执行结果如图:

最终文件夹内会有以下文件,如图:

 

将生成的traineddata放入tessdata中

最后将num.trainddata复制到tesseract-ocr中tessdata文件夹即可。

 

3、最后的测试

按照之前步骤,使用命令行输入

tesseract test.png output_2 -l num

我们可以看到新生成的文件output_2的内容为762408,内容完全正确。细心的人会发现,最后一句指令,我们使用了指令[-l num]而不是[-l eng]。这说明,最后一次转换我们使用的是新生成的num语言的匹配库而不是默认的eng语言匹配库。

 

 

我们可以看到,经过简单的训练,我们对于数字数据的转换准确率提高了很多。tesseract的优点除了可以不断学习以外,还因为是使用c 写的开源程序,可以使用c#或者c 调用以及修改,很关键!

关于tesseract,关于ocr,关于计算机,还有太多值得自己去学习,希望以后可以在这里记录下来。

如有错误或者建议,请尽情指教!

 

大二暑期实习

2016/8/12

作者: 小lian

出处: http://www.cnblogs.com/cnlian/>

本文尊龙凯时官方的版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(671266128@qq.com)咨询.







http://www.ngui.cc/el/5127592.html

相关文章

macos mkdir: /usr/var: operation not permitted

在 macos 下配置 php 环境,启动服务时 sudo php-fpm -d 输出错误: error: failed to open error_log (/usr/var/log/php-fpm.log): no such file or directory (2) error: failed to post process the configuration error: fpm initialization faile…

nginx php-fpm file not found.问题解决记录

现象确认: 打开浏览器的开发者工具,查看请求信息 http/1.1 404 not found server: nginx/1.11.10 date: fri, 20 apr 2018 08:10:13 gmt content-type: text/html; charset=utf-8 transfer-encoding: chunked connection: keep-alive x-powered-by: php/5.6.30 说明结…

mac系统,php-fpm加入开机启动项

寻找php-fpm的路径 whereis php-fpm 如果找不到,可以尝试使用: find / -name php-fpm一般默认的路径就是: /usr/sbin/php-fpm 修改php-fpm.conf配置文件 默认位置是: /private/etc/php-fpm.conf 如果不存在的话,就看看是不是存在 /private/etc/php-fpm.conf.defa…

springboot 项目 ajax post 出现 400 bad request 错误 后台调试不进断点的解决方法

在使用ajax的时候,你可能遇到莫名其妙的的错误,这时你需要学会使用开发者工具来查看并定位、解决问题。与这个问题相关的,你也可以参考: post 400 bad request the request sent by the client was syntactically incorrect 最近有…

mac finder变慢解决办法

macos 在用了一段时间(到现在有一年的时间吧)之后,变得越来越慢了,比如要上传文件或保存文件,打开浏览文件或目录对话窗口就需要等几十秒,简直没办法忍受。 解决方法: 1. 打开终端输入 sudo n…

macos finder显示文件非常慢的解决办法

上篇 mac finder变慢解决办法 主要是解决打开文件或保存文件时的浏览对话框打开速度特慢的问题,这里说一下用了这么久的finder,却忽略了的偏好设置,这个真的很关键! 1、打开finder偏好设置 2、更改开启新finder窗口时打开的目录…

aop(面向切面编程)、filter(过虑器)、interceptor(拦截器)

aop(面向切面编程) 面向切面编程(aop是aspect oriented program的首字母缩写) ,我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职…

springboot 项目 @enablewebmvc 注解应用总结

springboot 项目中不管是在哪个类上使用 @enablewebmvc 注解,都将导致所有url访问时返回 404 错误; 看到一篇文章:“spring4 @enablewebmvc 纯注解启动”,但还没有在 spring mvc 项目上尝试过。 另外参考文章:“解析@enablewebmvc 、webmvcconfigurationsupport和webmvc…

springboot 拦截器(interceptor)的使用

拦截器intercprot 和 过滤器 filter 其实作用类似 在最开始接触java 使用struts2的时候,里面都是filter 后来springmvc时就用interceptor 没太在意过区别,反正就是起检查作用的, 仔细阅读 过滤器(filter)和拦截器…

详解springmvc中使用interceptor拦截器

springmvc 中的interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。 一、定义interceptor实…
网站地图