一、Tesseract-OCR安装
1,Mac下安装
brew install automake autoconf libtool autoconf-archive pkgconfig leptonica icu4c gcc pango leptonica
brew info tesseract
brew install tesseract
2,Linux下安装
安装并编译Tesseract
1.下载安装编译要用到的文件。(此网盘tesseract为3.0版本)
在安装tesseract时,需要下载很多文件,网上有的博客中给了下载链接,但是好多都需要翻墙才能下载,在这里我把所需要的文件下载到了网盘里供大家下载,https://pan.baidu.com/s/1mj6YTIw 提取码是:95p5
注:一定要先把这些文件下载到本地再进行后面的安装,因为后面会用到这些文件。
2.安装相应lib。
打开linux下的命令行,分别输入以下命令:
sudo apt-get install libpng12-dev libjpeg62-dev libtiff5-dev libtool gcc g++ automake
3.下载安装leptonica。
在linux命令行中输入:
wget http://www.leptonica.org/source/leptonica-1.71.tar.gz
执行完毕后就得到了leptonica-1.71.tar.gz压缩文件,解压:
tar -zxvf leptonica-1.71.tar.gz
./configure & make &make install
4.下载安装tesseract。
安装编译tesseract所需的tesseract-3.04.00文件。
进入到该文件目录下:
cd tesseract-3.04.00
分别执行以下指令:
sudo ./autogen.sh & ./configure & make & make install &ldconfig
5.安装中英文语言包。
将语言包chi_sim.traineddata、eng.traineddata、eng.traineddata.part三个文件,并把它们放到tessdata文件夹中。
cp chi_sim.traineddata /usr/local/share/tessdata
cp eng.traineddata /usr/local/share/tessdata
cp eng.traineddata.part /usr/local/share/tessdata
6.简单验证测试
testing目录下
tesseract phototest.tif result -l eng
3,windows下安装
1.下载并安装Tesseract
其中文件名中带有dev的为开发版本,不带dev的为稳定版本,可以选择下载不带dev的版本
2、配置环境变量
将安装路径添加到环境变量path中
二、安装遇到的坑
1.在使用tesseract命令行进行测试时,报以下的错误
Error opening data file \Program Files (x86)\Tesseract-OCR\tessdata/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
Failed loading language 'eng'
Tesseract couldn't load any languages!
Could not initialize tesseract.
报错是意思是缺少环境变量TESSDATA_PREFIX,导致无法加载任何语言,就不能初始化tesseract。
解决的方法也很简单,在环境变量中添加TESSDATA_PREFIX=/dir/dir/tessdata
2.使用pytesseract时,出现以下错误
Traceback (most recent call last):
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 170, in run_tesseract
proc = subprocess.Popen(cmd_args, **subprocess_args())
File "D:\Python36\lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "D:\Python36\lib\subprocess.py", line 997, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:/python/20180911.py", line 4, in
text = pytesseract.image_to_string(Image.open(r'D:\chromeDownload\image.png'))
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 294, in image_to_string
return run_and_get_output(*args)
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 202, in run_and_get_output
run_tesseract(**kwargs)
File "D:\Python36\lib\site-packages\pytesseract\pytesseract.py", line 172, in run_tesseract
raise TesseractNotFoundError()
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path
解决方案如下:
pytesseract安装后,在python的Lib目录下site-packges下会生成一个pytesseract文件夹,文件夹中找到pytesseract.py,路径为:D:\Python36\Lib\site-packages\pytesseract,使用notepad之类软件打开pytesseract.py,找到如下两行:
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'tesseract'
将tesseract_cmd = 'tesseract'修改为:tesseract_cmd = 'D:/Program Files (x86)/Tesseract-OCR/tesseract.exe'
3.在安装完Tesseratc以后,进行测试,然后出现以下错误:

在网上看了一下,有的人说是leptonica的问题,可以输入命令:
tesseratc -v查看,只会显示如下信息:
tesseract 3.02.02
leptonica-1.71
zlib 1.2.3
就是缺少相关可以识别图片的依赖包,解决方法
1、yum install libjpeg-devel
2、yum install libpng-devel
3、进入leptonica的安装文件夹重新编译
4、./configure
5、make
6、make install
三、jTessBoxEditor安装
1.安装 jTessBoxEditor
- 下载jTessBoxEditor,地址VietOCR - Browse /jTessBoxEditor at SourceForge.net
- 解压后得到jTessBoxEditor
2.安装jdk1.8,必须是1.8及以上
四、jTessBoxEditor使用、训练
- 训练的大致步骤:
- 获取样本文件 -> Merge样本文件 –> 生成BOX文件 -> 定义字符配置文件 -> 字符矫正 -> 合成traineddata -> 将生成的traineddata放入tessdata中
1、将图片转换成tif格式,并生成box文件。
可以通过画图,然后另存为tif即可。更改图片名字,这个是有要求的
【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
【语法】:lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式
比如我们要训练自定义字库 mjorcen字体名normal
那么我们把图片文件重命名 mjorcen.normal.exp0.jpg在转tif。
生成box文件。
tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox

box文件和对应的tif一定要在相同的目录下,不然后面打不开。
2、定义字符配置文件
新建一个font_properties文件
里面内容写入 normal 0 0 0 0 0 表示默认普通字体
【语法】:fontname为字体名称,italic为斜体,bold为黑体字,
fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用
3、打开jTessBoxEditor矫正错误并训练
打开train.bat

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

4、训练。并合成traineddata 文件
只要在命令行输入命令即可。
a. 使用修改后的box文件来训练
tesseract mjorcen.normal.exp0.png mjorcen.normal.exp0 nobatch box.train
b. 提取字符
unicharset_extractor mjorcen.normal.exp0.box
c. 生成特征1
shapeclustering -F font_properties -U unicharset mjorcen.normal.exp0.tr
d. 生成特征2
mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr
e. 生成特征3
cntraining mjorcen.normal.exp0.tr
f. 此时会发现生成了几个新文件,将五个文件改名字,加上前缀 "normal."
rename
j.合并五个文件,生成traineddata文件
combine_tessdata normal.

5、测试训练后的traineddata 文件
1、把 normal.traineddata 复制到Tesseract-OCR 安装目录下的tessdata文件夹中
2、识别命令:
tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l normal
3、效果

对比:

五、Python结合Tesseract
- 普通纯字母数字
- 图像二值化
- 去除图像噪点
- tesseract识别
Python验证码识别图像二值化去除噪点(tesseract识别数字字母)
图像的模式,常见的mode 有 “L” (luminance) 表示灰度图像,“RGB”表示真彩色图像,和 “CMYK” 表示出版图像,表明图像所使用像素格式。如下表为常见的nodes描述:
| modes | 描述 |
| 1 | 1位像素,黑和白,存成8位的像素 |
| L | 8位像素,黑白 |
| P | 8位像素,使用调色板映射到任何其他模式 |
| RGB | 3× 8位像素,真彩 |
| RGBA | 4×8位像素,真彩+透明通道 |
| CMYK | 4×8位像素,颜色隔离 |
| YCbCr | 3×8位像素,彩色视频格式 |
| I | 32位整型像素 |
| F | 32位浮点型像素 |
1248

被折叠的 条评论
为什么被折叠?



