专栏首页伟大程序猿的诞生python人工智能-图像识别

python人工智能-图像识别

一、安装库

首先我们需要安装PIL和pytesseract库。 PIL:(Python Imaging Library)是Python平台上的图像处理标准库,功能非常强大。 pytesseract:图像识别库。

我这里使用的是python3.6,PIL不支持python3所以使用如下命令

pip install pytesseract
pip install pillow

如果是python2,则在命令行执行如下命令:

pip install pytesseract
pip install PIL

这时候我们去运行上面的代码会发现如下错误:

错误提示的很明显: No such file or directory :”tesseract”

这是因为我们没有安装tesseract-ocr引擎

二、tesseract-ocr引擎

光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术非常专业,一般多是印刷、打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR发展较早,像一些大公司,如IBM、微软、HP等,即使没有推出单独的OCR产品,但是他们的研发团队早已掌握核心技术,将OCR功能植入了自身的软件系统。对于我们程序员来说,一般用不到那么高级的,主要在开发中能够集成基本的OCR功能就可以了。这两天我查找了很多免费OCR软件、类库,特地整理一下,今天首先来谈谈Tesseract,下一次将讨论下Onenote 2010中的OCR API实现。可以在这里查看OCR技术的发展简史。 Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。 数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。

安装tesseract-ocr引擎

brew install tesseract

然后我们通过tesseract -v看一下是否安装成成功

tesseract 3.05.01
leptonica-1.75.0
libjpeg 9b : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11

这时候我们运行上面代码会出现乱码

这是因为tesseract默认只有语言包中没有中文包,如下图:

安装tesseract-ocr语言包

我们去GitHub下载我们需要的语言包,这里我只下载了chi_tra.traineddatachi_sim.traineddata github:tesseract-ocr/tessdata 然后放到/usr/local/Cellar/tesseract/3.05.01/share/tessdata路径下面。

可以通过tesseract --list-langs查看本地语言包:

可以通过tesseract --help-psm 查看psm

0:定向脚本监测(OSD) 1: 使用OSD自动分页 2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别) 3 :全自动分页,但是没有使用OSD(默认) 4 :假设可变大小的一个文本列。 5 :假设垂直对齐文本的单个统一块。 6 :假设一个统一的文本块。 7 :将图像视为单个文本行。 8 :将图像视为单个词。 9 :将图像视为圆中的单个词。 10 :将图像视为单个字符。

为什么这里要强调语言包和psm,因为我们在使用中会用到, 比如多个语言包组合并且视为统一的文本块将使用如下参数: pytesseract.image_to_string(image,lang="chi_sim+eng",config="-psm 6") 这里我们通过+来合并使用多个语言包。

接下来我们看一下配置好一切的正确结果。

import pytesseract
from PIL import Image

image = Image.open("../pic/c.png")
code = pytesseract.image_to_string(image,lang="chi_sim",config="-psm 6")
print(code)

此时大公告成。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android常见问题剖析

    先知先觉
  • Android TV开发总结【RecycleView】

    在TV开发中RecycleView的使用是最让人头疼的经常会出现焦点丢失。因为当item未显示时不能获取焦点。所以当我们按上下键时经常丢失焦点或者焦点乱跳。要解...

    先知先觉
  • Android浸入式

    现在比较流行的就是浸入式,也就是状态栏颜色和当前页面颜色保持一致,为了有更好的视觉效果。 首先: 在setContentView()之前加上如下代码 ...

    先知先觉
  • Tesseract Ocr文字识别

    Java中文社群-磊哥
  • Tesseract Ocr文字识别

    Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。2005年,Tesseract由美...

    Java中文社群-磊哥
  • 特写 | CVPR十年轶事:走出象牙塔

    这不是石建萍第一次来 CVPR 了。过去这八年,她几乎没落下过一届,倒也习惯了每年办一次美国签证。只不过,这么多年以来,参加 CVPR 的身份却在不断变化:从一...

    机器之心
  • MongoDB Java 连接

    阳光岛主
  • 全排列 next_permutation的使用

    给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有'a' < 'b' < ... < 'y' < 'z',而且给定的字符...

    喜欢ctrl的cxk
  • Linux之ps进程查看命令

    AlicFeng
  • 超实用的8个Linux命令行性能监测工具

    对每个系统/网络管理员来说,每天监测Linux系统性能是一项非常艰巨的任务。在IT业从事5年的Linux系统管理员后,我发现监控和保持系统正常运行真不是件容易的...

    张善友

扫码关注云+社区

领取腾讯云代金券