【Tesseract-OCR】玩转OCR中文识别

一、准备工作:
1、下载Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安装就行。
2、下载chi_sim.traindata字库。要有这个才能识别中文。下好后,放到Tesseract-OCR项目的tessdata文件夹里面。

https://github.com/tesseract-ocr/tessdata

https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
3、下载jTessBoxEditor,这个是用来训练字库的,下好后,放到Tesseract-OCR项目下面。
以上的几个在百度都能找到下载,就不详细讲了。

二、识别
1、进入cmd,进入到要识别的图片的路径下。
2、输入命令
tesseract 图片名称 生成的结果文件的名称 字库
例如我的图片识别就是:

tesseract test.jpg result -l chi_sim

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

2、生成box文件。

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox

box文件和对应的tif一定要在相同的目录下,不然后面打不开。

3、打开jTessBoxEditor矫正错误并训练

打开train.bat
这里写图片描述

找到tif图,打开,并校正。

这里写图片描述

4、训练。

tesseract  mjorcen.normal.exp0.jpg mjorcen.normal.exp0  nobatch box.train
unicharset_extractor mjorcen.normal.exp0.box

新建一个font_properties文件

里面内容写入 normal 0 0 0 0 0 表示默认普通字体

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.

如图:
这里写图片描述

命令行输入,合并五个文件:

combine_tessdata normal.

得到训练好的字库。

五、测试

1、把 normal.traineddata 复制到Tesseract-OCR 安装目录下的tessdata文件夹中
2、识别命令:

tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal

识别成功,效果:

这里写图片描述

这里写图片描述

3、pycharm 程序实现

#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import time
time1 = time.time()
import pytesseract
from PIL import Image

img1 = Image.open(r'E:/mjorcen.normal.exp0.jpg')
code = pytesseract.image_to_string(img1,lang="normal")
print(code)

time2 = time.time()
print u'总共耗时:' + str(time2 - time1) + 's'

这里写图片描述

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页