Android--tesseract训练识别

 本文章是参考多篇文章总结并且在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文件就可以到代码里面试试了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值