OCR训练中文样本库和识别

1,745 阅读2分钟

简述

光学字符识别(英语:Optical Character Recognition,OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。关于中文的识别最好的开源库应该就是Tesseract OCR了。本文则重点介绍训练出一份自己需要的样本库并识别(本文默认你已经会直接导入官方训练库识别)

准备工作

1)安装tesseract ocr引擎

以Mac为例,直接选择homebrew命令安装 brew install --with-training-tools tesseract

2)下载chi_sim.traindata(中文识别库,直接放在tesseract安装目录的tessdata目录下,例如/usr/local/Cellar/tesseract/4.0.0/share/tessdata))

3)下载jTessBoxEditor2.2.0

训练步骤

1)把样本图片或者文字转换成tif格式(图片转tif 可以直接网上搜)这里讲文字转tif

双击解压后的jTessBoxEditor.jar文件,选择工具栏TIFF/Box Generator,把需要转换的文字直接拷贝到下面空白处

Output为tif文件输出目录,其他基本无需修改,然后点击Generate稍等片刻即可生成生成tif文件。

2)生成box文件

把第二步生成的tif文件改名 sll.normal.exp0.tif ,官网的写法~ 然后进入tif文件目录下执行命令

tesseract sll.normal.exp0.tif sll.normal.exp0 -l chi_sim batch.nochop makebox1

3)选择工具栏Box Editor,点击Open导入第一步生成的tif文件(会自动绑定第二步生成的box文件)

点击文字之后可以修改识别区域宽高,x,y坐标等,修改完成点击save保存

4)执行脚本

Mac执行 sh 脚本文件名.sh,然后回车依次输入sll(语言)normal(字体)

!/bin/sh

read -p "输入你语言:" lang
echo {lang}
read -p "输入你的字体:" font
echo {font}
echo "所以完整文件名为:"
echo {lang}.{font}.exp0.tif
echo "开始。。。"
echo {font} 0 0 0 0 0 >font_properties
tesseract  {lang}.{font}.exp0.tif {lang}.{font}.exp0  nobatch box.train
unicharset_extractor {lang}.{font}.exp0.box
shapeclustering -F font_properties -U unicharset {lang}.{font}.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset {lang}.{font}.exp0.tr
cntraining {lang}.{font}.exp0.tr
echo "开始重命名文件"
mv inttemp {font}.inttemp
mv normproto {font}.normproto
mv pffmtable {font}.pffmtable
mv shapetable {font}.shapetable
mv unicharset {font}.unicharset
echo "生成最终文件"
combine_tessdata ${font}.

echo "完成"

运行成功之后就会生成.traineddata文件,这个文件即只能识别我们训练的“识别”俩字,所以说在大小,识别速度上会大大优于官网的中文包,当然本文只是例子,实践项目中不可能只是“识别”两个字那么简单,比如中文简体3500字,那在修改box文件的时候确实是需要花费很久的时间的