安装 Tesserocr (填坑)

转载请注明出处:https://www.jianshu.com/u/5e6f798c903a

环境:

  • Win10_64
  • Python 3.6.6,安装路径 C:\Python36 (后面会用到该路径)

1. 安装 Tesserocr

tesserocr 是 Python 下的一个 OCR 识别库,该库本质上是对 tesseract 做了一层 Python API 封装。通过 tesserocr 的 PyPI页面,可以找到该项目的 GitHub 仓库 。仓库的 README.rst 中介绍了 Windows 平台的安装方式,原文如下:

The proposed downloads consist of stand-alone packages containing all the Windows libraries needed for execution. This means that no additional installation of tesseract is required on your system.

--snip: 这里跳过了使用 Conda 安装的方式,需要的话可以查看原文档--

pip:Download the wheel file corresponding to your Windows platform and Python installation from simonflueckiger/tesserocr-windows_build/releases and install them via:

> pip install <package_name>.whl

按照文档的意思,由于 stand-alone packages 中包含了 Windows 下所需的所有库。如果使用 stand-alone packages 安装 tesserocr ,便无需再额外安装 tesseract 。

这里一定要通过独立的 .whl 文件安装,不要通过 pip3 install tesserocr 直接安装,因为在 Windows 上会失败——据说这种方式只能用于 Linux,但我没有仔细研究过。

选择安装包时,tesserocr 和 tesseract 的版本要匹配,如 "tesserocr v2.2.2 (tesseract 4.0.0 master)" 释放,表明 "tesserocr-2.2.2" 要配合 "tesseract 4.0.0 master" 使用。如果 tesserocr 与 tesseract 间版本不匹配,识别结果中会出现非预期字符。例如,若是将 "tesserocr-2.2.2" 与 "tesseract 3.5.2" 搭配使用,结果中便会出现非预期字符。

由于,目前 Windows 下 tesseract 的最新稳定版是 3.5.2,于是我试图安装 "tesserocr v2.2.2 (tesseract 3.5.1)" 版本的 .whl 文件,却提示该 .whl 文件不支持当前平台,无法安装。所以,只能安装 "tesserocr v2.2.2 (tesseract 4.0.0 master)" 版本,在后文中需要配合 "tesseract 4.0.0 master" 使用。

1.1. 坑-1

如果依照官方文档,只安装了 tesserocr 的 .whl 文件,并尝试运行如下测试代码:

import tesserocr
from PIL import Image
image = Image.open('image.jpg') # 可在文末找到image.jpg
print(tesserocr.image_to_text(image))

便会得到如下错误提示:

Traceback (most recent call last):
  File "c:/Users/iwhal/Documents/GitHub/python_notes/notes_of_crawler/code_of_learn_is_ignored/test_of_tesserocr .py", line 4, in <module>
    print(tesserocr.image_to_text(image))
  File "tesserocr.pyx", line 2401, in tesserocr._tesserocr.image_to_text
RuntimeError: Failed to init API, possibly an invalid tessdata path: C:\\

Traceback 告诉我们:tessdata 路径无效,无法初始化 API。

错误的原因是:stand-alone packages 虽然包含了 Windows 下所需的所有库,但并是不包含语言数据文件(language data files)。并且数据文件需要被统一放置在 tessdata\ 文件夹中,并置于 C:\Python36 内。

获得数据文件有如下两种方式:

  • 方法一:按照下一节的方法安装 "tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe"(因为要与 tesserocr-2.2.2 匹配)。然后,将 C:\Program Files (x86)\Tesseract-OCR\ 下的 tessdata\ 文件夹复制到 C:\Python36\ 下即可 。
  • 方法二:无需安装 tesseract ,只需克隆 tesseract 仓库的主分支,然后将其中的 tessdata\ 文件夹复制到 C:\Python36\中。接下来,通过 tessdata_fast 仓库下载 eng.traineddata 语言文件,并放置于 C:\Python36\tessdata\ 内即可。

可见,解决此问题的关键在于获得 tesseract 的 tessdata\ 文件夹,并不一定要安装 tesseract ,但 tesseract 的版本一定要正确。

接下来尝试运行之前的代码:

import tesserocr
from PIL import Image
image = Image.open('image.jpg') # 可在文末找到image.jpg
print(tesserocr.image_to_text(image))

便会输出:

4VC7

1.2. 坑-2

为什么要使用 tessdata_fast 仓库 中的语言数据文件,而不使用 tessdata_best 仓库tessdata 仓库 中的文件喃?

因为,我使用了三个仓库各自的 eng.traineddata 文件,来识别了文末的验证码,发现只有 tessdata_fast 仓库 的识别结果与预期相同,另外两个都没有输出。 但对于更加简单的内容,tessdata 仓库tessdata_best 仓库 都有输出,但前者表现更好。 另外,"tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe" 安装包中同样使用的是 tessdata_fast 仓库 中的 eng.traineddata 文件。

2. 安装 tesseract

通过查看 tesseract 的 GitHub 仓库Wiki 主页,可得知 Windows 下的安装方法 ,原文如下:

Installer for Windows for Tesseract 3.05-02 and Tesseract 4.00-beta are available from Tesseract at UB Mannheim. These include the training tools. Both 32-bit and 64-bit installers are available.

An installer for the OLD version 3.02 is available for Windows from our download page. This includes the English training data. If you want to use another language, download the appropriate training data, unpack it using 7-zip, and copy the .traineddata file into the 'tessdata' directory, probably C:\Program Files\Tesseract-OCR\tessdata.

To access tesseract-OCR from any location you may have to add the directory where the tesseract-OCR binaries are located to the Path variables, probably C:\Program Files\Tesseract-OCR.

大意是在 Tesseract at UB Mannheim,可获得 Windows 安装包。 转到 UB-Mannheim/tesseract/wiki 后可见到下载链接,如下:

The latest installers can be downloaded here: tesseract-ocr-setup-3.05.02-20180621.exe, tesseract-ocr-w32-setup-v4.0.0-beta.1.20180608.exe and tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe (new, 64 bit, experimental). There are also older versions available.

如果需要 older versions 可以去到 https://digi.bib.uni-mannheim.de/tesseract/ 下载。 这里需要安装 "tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe",因为要与 tesserocr-2.2.2 匹配。
另外,tesseract 的文档位于 https://github.com/tesseract-ocr/tesseract/wiki/Documentation

2.1 语言包

通过 wiki 的 Data Files 部分,我们可以下载经过训练的语言包。将下载后的语言包,直接放到C:\Program Files (x86)\Tesseract-OCR\tessdata 即可使用。

注意语言包有三个分支:

在使用语言数据时要注意区分 Tesseract 的版本,3.04 或 3.05 的语言数据需要从 3.04 tree 获取。在 Data Files 中可以了解到更多语言包的分支,及其区别。

3. 附件

验证码
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生x阅读 15,967评论 3 119
  • 3.1 认知负荷 最小化受众感知到的认知负荷,最大化数据的墨水比 3.2杂乱 让图形显得不必要的复杂 3.3视觉认...
    dreamhappy2009阅读 416评论 0 0
  • 1本篇文章中学到的最重要的概念 ①每个人都是不一样的,都是自己不一样的烟火,正是每个人的不同才构成了这个丰富多彩的...
    103王舒阅读 383评论 5 3
  • 背景 由于升级了最新版本的mac操作系统,导致以前的python脚本不能用了,网上搜集了相关的资料发现老版本的命令...
    Daniel_Guo阅读 339评论 0 5