tesseract 3.02使用及语言库训练

来源:互联网 发布:黑暗森林威慑 知乎 编辑:程序博客网 时间:2024/05/22 07:50

tesseract使用

Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文),github上有工程。地址为https://github.com/tesseract-ocr/tesseract。

使用

  1. 安装,可以安装发布版本.exe,直接可以使用
  2. 使用
    1) 准备一副待识别的图像,input.jpg,放到tesseract-OCR的安装目录下
    2)打开命令行,(如果装在C盘,用管理员身份启动),打开目录到tesseract-OCR的安装目录,输入指令tesseract.exe input.jpg output -l eng,其中output为输出的.txt文件,eng表示识别的语言为英文。查看output可知道识别准确率不高。

训练样本

  1. 下载工具jTessBoxEditor,其中有个.jar文件,可以直接双击使用(由于该工具由java开发,需要安装jdk)
  2. 准备样本图像(至少5张),和input.jpg里的内容类似
  3. 合并样本图像。运行jTessBoxEditor–>Tools–>Merge Tiff,在弹出的对话框中shift选中所有样本图片,合并成num.font.exp0.tif文件。
  4. 生成Box File文件。将生成的num.font.exp0.tif放到tesseract-OCR目录下,打开命令行,执行tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox 生成num.font.exp0.box文件,BOX文件为Tessercat识别出的文字和其坐标。
  5. 文字校正。运行jTessBoxEditor–>Box Editor,打开num.font.exp0.tif,可以看到有些字符识别不正确,通过该工具手动对每张图片中识别错误的字符进行校正。校正完成后保存。
  6. 定义字体特征文件。Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件。font_properties不含有BOM头,文件内容格式如下:<fontname> <italic> <bold> <fixed> <serif> <fraktur> 这里为font 0 0 0 0 0 取值全为0表示字体不是粗体、斜体等等。ps:将此文件放置到tesseract目录下。
  7. 生成训练文件。命令行执行tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train 生成num.font.exp0.tr训练文件。
  8. 生成字符集文件。命令行执行unicharset_extractor.exe num.font.exp0.box,生成unicharset字符集文件。
  9. 生成shape文件。命令行执行shapeclustering.exe -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr, 生成shape文件
  10. 生成聚集字符特征文件。命令行执行mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr ,生成3个特征字符文件,unicharset、inttemp、pffmtable
  11. 生成字符正常化特征文件。命令行执行cntraining.exe num.font.exp0.tr,生成正常化特征文件normproto
  12. 更名。命令行执行
    rename normproto num.normproto
    rename inttemp num.inttemp
    rename pffmtable num.pffmtable
    rename shapetable num.shapetable
    ,把步骤10-11生成的特征文件进行更名。
  13. 合并训练文件。命令行执行combine_tessdata.exe num. ,生成num.traineddata文件。
    注意:
    a. num.traineddata文件最终要拷贝到tesseract安装目录的tessdata目录下,才能被tesseract找到。
    b. 命令行最后必须带一个点。
    c. 执行结果中,1,3,4,5,13这几行必须有数值,不为-1,才代表命令执行成功。

测试使用

命令行执行tesseract.exe input.jpg output -l num 与之前的对比,准确率提高不少。

总结

以上为一个使用jTessBoxEditor工具辅助实现tesseract语言库训练的例子。仅作为参考。


更新:
尽量不要将tesseract安装在C盘,由于管理员权限问题,会产生box文件无法更新的问题,导致样本校正失去作用,进而影响准确率提高。

原创粉丝点击