介绍
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
目录下。
库名-语言表如下
库名 | 语言 |
---|---|
afr | Afrikaans(南非荷兰语) |
amh | Amharic(阿姆哈拉语) |
ara | Arabic(阿拉伯语) |
asm | Assamese(阿萨姆) |
aze | Azerbaijani(阿塞拜疆) |
aze_cyrl | Azerbaijani – Cyrilic(阿塞拜疆-Cyrilic) |
bel | Belarusian(白俄罗斯) |
ben | Bengali(孟加拉) |
bod | Tibetan(西藏) |
bos | Bosnian(波斯尼亚) |
bul | Bulgarian(保加利亚语) |
cat | Catalan; Valencian(加泰罗尼亚语; 巴伦西亚) |
ceb | Cebuano(宿务) |
ces | Czech(捷克) |
chi_sim | Chinese – Simplified(中国-简体) |
chi_tra | Chinese – Traditional(中国-繁体) |
chr | Cherokee(切诺基) |
cym | Welsh(威尔士) |
dan | Danish(丹麦) |
dan_frak | Danish – Fraktur(丹麦-Fraktur) |
deu | German(德国) |
deu_frak | German – Fraktur(德国-Fraktur) |
dzo | Dzongkha(不丹文) |
ell | Greek, Modern (1453-)(希腊,现代(1453-)) |
eng | English(英语) |
enm | English, Middle (1100-1500)(英语,中东(1100-1500)) |
epo | Esperanto(世界语) |
equ | Math / equation detection module(数学/方程式检测模块) |
est | Estonian(爱沙尼亚) |
eus | Basque(巴斯克) |
fas | Persian(波斯) |
fin | Finnish(芬兰) |
fra | French(法语) |
frk | Frankish(法兰克) |
frm | French, Middle (ca.1400-1600)(法国,中东(ca.1400-1600)) |
gle | Irish(爱尔兰) |
glg | Galician(加利西亚) |
grc | Greek, Ancient (to 1453)(希腊语,古(到1453年)) |
guj | Gujarati(古吉拉特语) |
hat | Haitian; Haitian Creole(海天; 海地克里奥尔语) |
heb | Hebrew(希伯来语) |
hin | Hindi(印地文) |
hrv | Croatian(克罗地亚) |
hun | Hungarian(匈牙利) |
iku | Inuktitut(因纽特语) |
ind | Indonesian(印尼) |
isl | Icelandic(冰岛) |
ita | Italian(意大利语) |
ita_old | Italian – Old(意大利语-旧) |
jav | Javanese(爪哇) |
jpn | Japanese(日本) |
kan | Kannada(卡纳达语) |
kat | Georgian(格鲁吉亚) |
kat_old | Georgian – Old(格鲁吉亚-旧) |
kaz | Kazakh(哈萨克斯坦) |
khm | Central Khmer(中央高棉) |
kir | Kirghiz; Kyrgyz(柯尔克孜; 吉尔吉斯) |
kor | Korean(韩国) |
kur | Kurdish(库尔德人) |
lao | Lao(老挝) |
lat | Latin(拉丁) |
lav | Latvian(拉脱维亚) |
lit | Lithuanian(立陶宛) |
mal | Malayalam(马拉雅拉姆语) |
mar | Marathi(马拉) |
mkd | Macedonian(马其顿) |
mlt | Maltese(马耳他) |
msa | Malay(马来文) |
mya | Burmese(缅甸) |
nep | Nepali(尼泊尔) |
nld | Dutch; Flemish(荷兰; 佛兰芒语) |
nor | Norwegian(挪威) |
ori | Oriya(奥里亚语) |
osd | Orientation and script detection module(定位及脚本检测模块) |
pan | Panjabi; Punjabi(旁遮普语; 旁遮普语) |
pol | Polish(波兰) |
por | Portuguese(葡萄牙语) |
pus | Pushto; Pashto(普什图语; 普什图语) |
ron | Romanian; Moldavian; Moldovan(罗马尼亚; 摩尔多瓦; 摩尔多瓦) |
rus | Russian(俄罗斯) |
san | Sanskrit(梵文) |
sin | Sinhala; Sinhalese(僧伽罗语; 僧伽罗语) |
slk | Slovak(斯洛伐克) |
slk_frak | Slovak – Fraktur(斯洛伐克- Fraktur) |
slv | Slovenian(斯洛文尼亚) |
spa | Spanish; Castilian(西班牙语; 卡斯蒂利亚) |
spa_old | Spanish; Castilian – Old(西班牙语; 卡斯蒂利亚-老) |
sqi | Albanian(阿尔巴尼亚) |
srp | Serbian(塞尔维亚) |
srp_latn | Serbian – Latin(塞尔维亚语-拉丁语) |
swa | Swahili(斯瓦希里语) |
swe | Swedish(瑞典) |
syr | Syriac(叙利亚) |
tam | Tamil(泰米尔) |
tel | Telugu(泰卢固语) |
tgk | Tajik(塔吉克斯坦) |
tgl | Tagalog(菲律宾语) |
tha | Thai(泰国) |
tir | Tigrinya(提格雷语) |
tur | Turkish(土耳其) |
uig | Uighur; Uyghur(维吾尔族; 维吾尔) |
ukr | Ukrainian(乌克兰) |
urd | Urdu(乌尔都语) |
uzb | Uzbek(乌兹别克斯坦) |
uzb_cyrl | Uzbek – Cyrilic(乌兹别克斯坦- Cyrilic) |
vie | Vietnamese(越南语) |
yid | Yiddish(意第绪语) |
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
ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig ,用途主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib.so),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.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