本文章是参考多篇文章总结并且在mac下进行训练 https://www.jianshu.com/p/5f847d8089ce
一.基础环境
Homebrew macOS下包管理工具或者自己找教程安装:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
imagemagick 图片处理:
brew install imagemagick
二.安装tesseract
踩坑第一步: 本来用这个下面命令安装后面导致报错--with-training-tools查阅文章说没有这个命令了,需要在线编译。哭
brew install --with-training-tools tesseract
Error: invalid option: --with-training-tools
报错参考:https://pengshiyu.blog.csdn.net/article/details/104398303
在线编译参考:https://tesseract-ocr.github.io/tessdoc/Compiling.html#macos
如果你已经安装了先执行这个命令卸掉吧brew uninstall tesseract ,然后下面brew顺序执行安装。。
# Packages which are always needed.
brew install automake autoconf libtool
brew install pkgconfig
brew install icu4c
brew install leptonica
# Packages required for training tools.
brew install pango
# Optional packages for extra features.
brew install libarchive
# Optional package for builds using g++.
brew install gcc
git clone https://github.com/tesseract-ocr/tesseract/
cd tesseract
./autogen.sh
mkdir build
cd build
# Optionally add CXX=g++-8 to the configure command if you really want to use a different compiler.
../configure PKG_CONFIG_PATH=/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/libarchive/lib/pkgconfig:/usr/local/opt/libffi/lib/pkgconfig
make -j
# Optionally install Tesseract.
sudo make install
# Optionally build and install training tools.
make training
sudo make training-install
下载eng.traineddata 并且拷贝到tessdata文件夹下。
https://github.com/tesseract-ocr/tessdata
https://pan.baidu.com/s/1YvpTJ8Nmo-oN5PNpom350g 提取码:jbv6
具体参考这篇文章:https://pengshiyu.blog.csdn.net/article/details/104398303
Mac 终端拷贝文件到指定目录
终端输入:sudo cp -r 源文件地址 目标地址
三. 处理图片
- Tesseract在DPI为至少为300 DPI的图像上效果最佳,所以需要考虑提高图片的DPI,一般图片默认的都是72 。
- 将图像转换为黑白(就是二值化)。
- 消除噪点(就是降低干扰)。
- 旋转(就是将文字尽量水平)。
- 移除不必要的边界(就是要适当裁剪图片)。
分别灰度,二值化,颜色反转经过处理后图片。点击这里转换代码
转换图片的dpi默认为72,咱们转为300.shell进去刚才保存的图片的文件夹。
第二行是找到咱们所有.jpg图片该dpi为300并保存,第三行是把所有图片转换为tif格式。
中间那个目录是你自己的就行了。
cd /Users/zhaolei/Desktop/箱号照片 ;
convert '*.jpg' -density 300 /Users/zhaolei/Desktop/箱号照片/new/img-%d.jpg
convert '*.jpg' /Users/zhaolei/Desktop/箱号照片/line/img-%d.tif
四.合并tif图片文件
下载刚才我分享的文件jTessBoxEditor.jar然后解压进去解压目录运行就可以,mac下运行命令为
java -Xms4096m -Xmx4096m -jar jTessBoxEditor.jar
这个文件名,是有讲究的,可以看官网文档的说明,有明确的格式要求:
[lang].[fontname].exp[num].tif
lang--你准备训练的语言的名。
fontname--fontname就是fantname,需要你指定你的语言的字体名称。
exp[num]---exp 后面是编号。
搞一个新的文件夹来保存生成的tif文件。命令行进去到刚才保存到tif的文件夹生成box文件,我的命名下面这个样。
五.生成box文件
shell进入到刚才生成的tif文件夹,执行命令。
tesseract cont.container.exp1.tif cont.container.exp1 batch.nochop makebox
如果你有empat page的报错可以加个参数试试。
tesseract cont.container.exp1.tif cont.container.exp1 --psm 6 batch.nochop makebox
六.人肉训练
首先打开刚才合并tif文件
1.是弄完保存,第一次我没保存然后关掉了太痛苦了。
2.翻页的,搞完一页还有一页慢慢来。
七.生成 .tr 文件
tesseract cont.container.exp1.tif cont.container.exp1 box.train
八.生成unicharset文件
unicharset_extractor cont.container.exp1.box
九.定义 font_properties 文件
重要的事情再说一遍,具体含义,看官方Wiki,这里就跟着往下执行就好。
在当前的训练文件夹中,新建 font_properties.txt
文件,文件名不要自己发挥,必须这个名字,建议使用 vi编辑,而不是用文档编辑器编辑,原因么,就是防止换行符的不一致问题咯。按照你的实际情况,在文档中输入下面一行内容,我输入的是:
container 0 0 0 0 0
https://www.jianshu.com/p/5f847d8089ce这篇文章3.7
简单翻译下官方解释:
font_properties文件的目的是提供字体样式信息,当字体被识别时将显示在输出中。
在每行font_properties文件的格式如下:
fontname italic bold fixed serif fraktur
其中fontname(!不允许有空格)是一个字符串命名的字体,italic,bold,fixed,serif和fraktur都是简单0或1标志指示字体是否具有命名属性。
我觉得我训练的lang文件没有必要有什么特殊的,所以就全为 0 。
十.聚类:Clustering
mftraining -F font_properties -U unicharset -O cont.unicharset cont.container.exp1.tr
这里又个坑就是报找不到fot_properties文件,我明明有啊。后来我加了.txt就好了。好吧
mftraining -F font_properties.txt -U unicharset -O cont.unicharset cont.container.exp1.tr
cntraining cont.container.exp1.tr
十一.合并文件
刚才创建的五个文件:shapetable,normproto,inttemp,pffmtable,unicharset,前面加个cont. 手工改改后执行命令
combine_tessdata cont.
然后就出来了一个cont.traineddata文件就可以到代码里面试试了。