专栏首页竹清助手Tesseract-OCR识别中文与训练字库实例

Tesseract-OCR识别中文与训练字库实例

关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试用一下,分享到博客让有同样兴趣的人少走弯路。 文中所用到的身份证图片资源是百度找的,如有侵权可联系我删除。

一、准备工作 1、下载Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安装就行。 2、下载chi_sim.traindata字库。要有这个才能识别中文。下好后,放到Tesseract-OCR项目的tessdata文件夹里面。 3、下载jTessBoxEditor,这个是用来训练字库的。 以上的几个在百度都能找到下载,就不详细讲了。

二、识别 1、进入cmd,进入到要识别的图片的路径下。 2、输入命令 1 tesseract 图片名称 生成的结果文件的名称 字库 例如我的图片识别就是: 1 tesseract test.jpg result -l chi_sim 识别完后会生成result.txt文件 当然啦效果不太理想。所以我们要训练自己的字库。

三、训练 1、将图片转换成tif格式,用于后面生成box文件。可以通过画图,然后另存为tif即可。 更改图片名字,这个是有要求的=。= tif文面命名格式[lang].[fontname].exp[num].tif lang是语言 fontname是字体 比如我们要训练自定义字库 mjorcen字体名normal 那么我们把图片文件重命名 mjorcen.normal.exp0.jpg在转tif。

2、生成box文件。 1 tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox box文件和对应的tif一定要在相同的目录下,不然后面打不开。

3、打开jTessBoxEditor矫正错误并训练 打开train.bat 找到tif图,打开,并校正。

4、训练。 只要在命令行输入命令即可。 1 tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 nobatch box.train 1 unicharset_extractor mjorcen.normal.exp0.box

在这我明明已经矫正好了,但是还是有1个字符不能识别出来,报的错跟实际上完全没有相关性,不知道是不是bug,到后面的结果就是“园”字没有识别出来。 先不管,毕竟只有一个样本。

新建一个font_properties文件 里面内容写入 normal 0 0 0 0 0 表示默认普通字体

继续敲命令 1 2 3 4 5 6 7 8 9 shapeclustering -F font_properties -U unicharset mjorcen.normal.exp0.tr

mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr

cntraining mjorcen.normal.exp0.tr

最后会生成五个文件,把目录下的unicharset、inttemp、pffmtable、shapetable、normproto这五个文件前面都加上normal. 如图:

命令行输入,合并五个文件: 1 combine_tessdata normal. 得到训练好的字库。

四、测试 1、把 normal.traineddata 复制到Tesseract-OCR 安装目录下的tessdata文件夹中

2、识别命令: 1 tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal

3、效果

对比:

总结:肯定要自己训练过后的字库识别效果好,接下来要把整个项目弄进android,还要研究怎么将多个字库合并成一个字库,因为我不可能一次训练完所有的图片文字的。到时候有什么成果了再分享博文。希望大家可以点赞!谢谢。

更新:没有错误的话命令行的提示应该是这样的

本文分享自微信公众号 - 竹清助手(zhuqing_help)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 常用的Git Tips

    一、Configuration:配置 列举所有的别名与配置 git config --list Git 别名配置 git config --global ali...

    貟王軍
  • php中的header跳转常用方式

    header("Location:")作为php的转向语句。其实在使用中,他有几点需要注意的地方。 1、要求header前没有任何输出 但是很多时候在head...

    貟王軍
  • 如何构建高扩展性网站?

      本书从多个方面围绕高扩展性提出了50条建议,一个高扩展性的网站会随着业务的发展、用户的增加,自由的扩展架构,从而轻松的应付网站的快速发展。下面看看本书的具体...

    貟王軍
  • 映射真实世界后,百度地图开始用人工智能优化这个世界

    今天,百度地图与北京交管局有一个很有意思的战略合作,这将直接影响北京市民的出行:百度地图为北京交警量身打造了一个城市灯控路口路况监测平台——百度地图智慧信号灯研...

    罗超频道
  • 百度和高德的AI地图对垒

    自从国家提出“新基建”的发展目标以来,城市交通系统的发展变得更加快速,面对日益复杂的交通系统,手机地图成为人们出行必不可缺的重要工具,伴随着5G技术、智能汽车的...

    刘旷
  • Redis:MySQL 算老几?

    我知道 MySQL 看我不顺眼,不就是他的好基友 Tomcat 不怎么搭理他了吗? 这能怪我? 谁让他那么慢?

    CSDN技术头条
  • 解决方案 | MySQL DBA主从复制出错怎么办?

    1. 如果主从复制时发生了主键冲突,从而阻止了主从复制,可以使用sql_slave_skip_counter这个变量来忽略错误将其排除

    数据和云
  • 一次Testing in Production方案的探索 | 洞见

    传统的软件测试大多是在测试环境下进行的。人们普遍认为生产环境是服务于最终用户的,只有在测试环境下进行充分测试后才会发布给用户。

    ThoughtWorks
  • 概率公平聚类(CS AI)

    在聚类问题中,中央决策者将获得关于顶点的完整度量图,并且必须提供将某些目标函数最小化的顶点聚类。在公平聚类问题中,顶点具有一种颜色(例如,组中的成员资格),并且...

    刘子蔚
  • Python基础之os和数据结构

    今天总结了下Python的基础,发现还是有很多基础需要巩固,直接把学习的内容放上来。 >>> import os 得到当前的所在的路径 >>> os.getcw...

    jeanron100

扫码关注云+社区

领取腾讯云代金券