介绍

Tesseract是一个开源的OCR引擎,能识别100多种语言(中,英,韩,日,德,法…等等),但是Tesseract对手写的识别能力较差。

源码地址:

https://github.com/tesseract-ocr/tesseract/releases

mac系统安装

brew install tesseract

图

安装成功

cd /usr/local/Cellar/tesseract/4.0.0/share/tessdata/

不同的版本、文件夹的版本号不一样、如果下面有这些语言文本就不用单独下载了

图

下载语言库

如果没有则需要到github上下载:https://github.com/tesseract-ocr/tessdata

根据自己的需求选择所要的语言库,在这里我们选择的是简体中文所以选择的库是:chi_sim.traineddata
将文件拷贝到到:/usr/local/Cellar/tesseract/4.0.0/share/tessdata目录下。

库名-语言表如下

库名语言
afrAfrikaans(南非荷兰语)
amhAmharic(阿姆哈拉语)
araArabic(阿拉伯语)
asmAssamese(阿萨姆)
azeAzerbaijani(阿塞拜疆)
aze_cyrlAzerbaijani – Cyrilic(阿塞拜疆-Cyrilic)
belBelarusian(白俄罗斯)
benBengali(孟加拉)
bodTibetan(西藏)
bosBosnian(波斯尼亚)
bulBulgarian(保加利亚语)
catCatalan; Valencian(加泰罗尼亚语; 巴伦西亚)
cebCebuano(宿务)
cesCzech(捷克)
chi_simChinese – Simplified(中国-简体)
chi_traChinese – Traditional(中国-繁体)
chrCherokee(切诺基)
cymWelsh(威尔士)
danDanish(丹麦)
dan_frakDanish – Fraktur(丹麦-Fraktur)
deuGerman(德国)
deu_frakGerman – Fraktur(德国-Fraktur)
dzoDzongkha(不丹文)
ellGreek, Modern (1453-)(希腊,现代(1453-))
engEnglish(英语)
enmEnglish, Middle (1100-1500)(英语,中东(1100-1500))
epoEsperanto(世界语)
equMath / equation detection module(数学/方程式检测模块)
estEstonian(爱沙尼亚)
eusBasque(巴斯克)
fasPersian(波斯)
finFinnish(芬兰)
fraFrench(法语)
frkFrankish(法兰克)
frmFrench, Middle (ca.1400-1600)(法国,中东(ca.1400-1600))
gleIrish(爱尔兰)
glgGalician(加利西亚)
grcGreek, Ancient (to 1453)(希腊语,古(到1453年))
gujGujarati(古吉拉特语)
hatHaitian; Haitian Creole(海天; 海地克里奥尔语)
hebHebrew(希伯来语)
hinHindi(印地文)
hrvCroatian(克罗地亚)
hunHungarian(匈牙利)
ikuInuktitut(因纽特语)
indIndonesian(印尼)
islIcelandic(冰岛)
itaItalian(意大利语)
ita_oldItalian – Old(意大利语-旧)
javJavanese(爪哇)
jpnJapanese(日本)
kanKannada(卡纳达语)
katGeorgian(格鲁吉亚)
kat_oldGeorgian – Old(格鲁吉亚-旧)
kazKazakh(哈萨克斯坦)
khmCentral Khmer(中央高棉)
kirKirghiz; Kyrgyz(柯尔克孜; 吉尔吉斯)
korKorean(韩国)
kurKurdish(库尔德人)
laoLao(老挝)
latLatin(拉丁)
lavLatvian(拉脱维亚)
litLithuanian(立陶宛)
malMalayalam(马拉雅拉姆语)
marMarathi(马拉)
mkdMacedonian(马其顿)
mltMaltese(马耳他)
msaMalay(马来文)
myaBurmese(缅甸)
nepNepali(尼泊尔)
nldDutch; Flemish(荷兰; 佛兰芒语)
norNorwegian(挪威)
oriOriya(奥里亚语)
osdOrientation and script detection module(定位及脚本检测模块)
panPanjabi; Punjabi(旁遮普语; 旁遮普语)
polPolish(波兰)
porPortuguese(葡萄牙语)
pusPushto; Pashto(普什图语; 普什图语)
ronRomanian; Moldavian; Moldovan(罗马尼亚; 摩尔多瓦; 摩尔多瓦)
rusRussian(俄罗斯)
sanSanskrit(梵文)
sinSinhala; Sinhalese(僧伽罗语; 僧伽罗语)
slkSlovak(斯洛伐克)
slk_frakSlovak – Fraktur(斯洛伐克- Fraktur)
slvSlovenian(斯洛文尼亚)
spaSpanish; Castilian(西班牙语; 卡斯蒂利亚)
spa_oldSpanish; Castilian – Old(西班牙语; 卡斯蒂利亚-老)
sqiAlbanian(阿尔巴尼亚)
srpSerbian(塞尔维亚)
srp_latnSerbian – Latin(塞尔维亚语-拉丁语)
swaSwahili(斯瓦希里语)
sweSwedish(瑞典)
syrSyriac(叙利亚)
tamTamil(泰米尔)
telTelugu(泰卢固语)
tgkTajik(塔吉克斯坦)
tglTagalog(菲律宾语)
thaThai(泰国)
tirTigrinya(提格雷语)
turTurkish(土耳其)
uigUighur; Uyghur(维吾尔族; 维吾尔)
ukrUkrainian(乌克兰)
urdUrdu(乌尔都语)
uzbUzbek(乌兹别克斯坦)
uzb_cyrlUzbek – Cyrilic(乌兹别克斯坦- Cyrilic)
vieVietnamese(越南语)
yidYiddish(意第绪语)

Tesseract使用

终端输入命令:tesseract --help

一般使用:

//默认使用eng文字库, imgName是图片的地址,result识别结果
tesseract imgName result

指定语言:

//指定使用简体中文
tesseract ./G.jpg result -l chi_sim
//查看本地存在的语言库
tesseract --list-langs

指定多语言:

//指定多语言,用+号相连
tesseract ./G.jpg result -l chi_sim+eng

有个地方需要特别注意,参数psm

//输入命令,查看psm的参数
tesseract --help-psm
 
  0    Orientation and script detection (OSD) only.
  1    Automatic page segmentation with OSD.
  2    Automatic page segmentation, but no OSD, or OCR.
  3    Fully automatic page segmentation, but no OSD. (Default)
  4    Assume a single column of text of variable sizes.
  5    Assume a single uniform block of vertically aligned text.
  6    Assume a single uniform block of text.
  7    Treat the image as a single text line.
  8    Treat the image as a single word.
  9    Treat the image as a single word in a circle.
 10    Treat the image as a single character.
 
 翻译(可能不是很准,最好看原文):
 0 定向脚本监测(OSD)
 1 使用OSD自动分页
 2 自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别)
 3 全自动分页,但是没有使用OSD(默认)
 4 假设可变大小的一个文本列。
 5 假设垂直对齐文本的单个统一块。
 6 假设一个统一的文本块。
 7 将图像视为单个文本行。
 8 将图像视为单个词。
 9 将图像视为圆中的单个词。
 10 将图像视为单个字符。

根据情况选择不同的psm值,这很重要,如果选择到不恰当的值会导致识别失败。
例如:

例子图片:1234.png

图

tesseract ./1234.png result -l chi_sim+eng

图

//不设置psm值的命令
➜  Downloads tesseract ./1234.png result -l chi_sim+eng
Tesseract Open Source OCR Engine v4.0.0 with Leptonica
Empty page!!
Empty page!!

//设置psm值的命令
➜  Downloads tesseract ./1234.png result -l chi_sim+eng --psm 6
Tesseract Open Source OCR Engine v4.0.0 with Leptonica

cat result.txt
成功识别:
一二三四
一二三四

图

MAC安装参考

https://blog.csdn.net/u010670689/article/details/78374623

官方参考安装文档

https://github.com/tesseract-ocr/tesseract/wiki

Ubuntu安装

tesseract4.0是一个开源的OCR,4.0版本引用了机器学习

tesseract4.0是依赖于leptonica-1.74.2以上版本的库和其他一些库

sudo apt-get install g++ # or clang++ (presumably)
sudo apt-get install autoconf automake libtool
sudo apt-get install autoconf-archive
sudo apt-get install pkg-config
sudo apt-get install libpng12-dev
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install zlib1g-dev

安装libtiff5-dev 遇到了依赖不兼容的问题

aptitude可以比apt-get更加智能地解决依赖问题,然后sudo aptitude install 对应安装包

选择合适的解决方案,便可解决问题!

训练需要的库

  • sudo apt-get install libicu-dev
  • sudo apt-get install libpango1.0-dev
  • sudo apt-get install libcairo2-dev

leptonica.1.74.2库以上的版本需要自己编译源码,源码下载地址:

https://github.com/DanBloomberg/leptonica/releases

http://www.leptonica.com/download.html

下载需要的版本,解压:

./configure

make

sudo make install即可

下面是编译tesseract4.0,源码下载地址:

https://github.com/tesseract-ocr/tesseract/releases

然后是解压,

./configure

发现出错了

error while loading shared libraries: liblept.so.5: cannot open shared object file: No such file or directory

ll /usr/local/lib/liblept.so.5 可以发现这个文件是存在的,在/etc/ld.so.conf文件中

添加”/usr/local/lib“这行

# ldconfig

再次执行就没有错误了

然后就是make

make install

下载官网训练好的 data:地址:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files#data-files-for-version-400

放到/usr/local/share/tesseract/

tesseract eng.png result -l eng 测试命令

https://blog.csdn.net/u012384044/article/details/77979803

Centos7安装

安装可能需要的依赖包。

yum -y update 

yum -y install libstdc++ autoconf automake libtool autoconf-archive pkg-config gcc gcc-c++ make libjpeg-devel libpng-devel libtiff-devel zlib-devel

yum group install -y "Development Tools"

pkg-config这个包不一定yum源里面有。如果出现Leptonica 1.74 or higher is required. 这个错误的话。那么一定要安装。

源码安装pkg-config

去下载最新的

https://pkg-config.freedesktop.org/releases/

wget https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz

tar -xf pkg-config-0.29.2.tar.gz

cd pkg-config-0.29.2/
./configure  --with-internal-glib  (可以不带参数)

make
install make

如果出现Leptonica 1.74 or higher is required. 需要安装

wget https://github.com/DanBloomberg/leptonica/releases/download/1.78.0/leptonica-1.78.0.tar.gz
tar -zxvf leptonica-1.78.0.tar.gz
cd leptonica-1.78.0/
./configure
make -j
make install
cd ../

安装tesseract

wget https://github.com/tesseract-ocr/tesseract/archive/4.0.0.tar.gz
tar -zxvf 4.0.0.tar.gz
cd tesseract-4.0.0/
./autogen.sh
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig LIBLEPT_HEADERSDIR=/usr/local/include ./configure --with-extra-includes=/usr/local/include --with-extra-libraries=/usr/local/lib
LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" make -j
make install
ldconfig
cd ..


wget https://github.com/tesseract-ocr/tessdata/raw/master/osd.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/master/equ.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata
wget https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata

mv *.traineddata /usr/local/share/tessdata

把命令加入环境变量 /usr/local/bin

vim /etc/profile

图

source /etc/profile

linux安装参考:

https://www.cnblogs.com/zhangbei/p/9950789.html

PHP类库地址

https://packagist.org/packages/thiagoalessio/tesseract_ocr

window使用参考

https://www.cnblogs.com/wzben/p/5930538.html

php代码参考

http://developer.51cto.com/art/201601/504121.htm

最后修改:2020 年 01 月 31 日
如果觉得我的文章对你有用,请随意赞赏