专栏首页咸鱼不闲Python Tesseract 图片识别-小操练

Python Tesseract 图片识别-小操练

小科普 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息. Tesseract的OCR引擎最先由HP实验室于1985年研发,2005年,交由Google对Tesseract进行改进、优化工作。

准备工作

1.PIL 、Pytesseract

from PIL import Image
from pytesseract import image_to_string

2.安装引擎 Tesseract-OCR

ok 用画图工具整张简单的图片(vm3.png)小试牛刀

上代码

from PIL import Image
from pytesseract import image_to_string

img = Image.open("vm3.png");
text = image_to_string(img)
print(text)

别走,留步,真的只有那么多,不信看结果

支持中文

but,Tesseract是老外开发的,默认不支持中文,需要我们加个中文语言包 将文件chi_sim.traineddata (密码:nd6p) 放到安装目录:Tesseract-OCR\tessdata文件夹内,再整张图

代码骚作修改(,lang='chi_sim')即可

from PIL import Image
from pytesseract import image_to_string

img = Image.open("vm3.png");
text = image_to_string(img,lang='chi_sim')
print(text)

没毛病

骚微复杂图像处理

其实,复杂图片的来不了,需要处理一下,比如这张图片:

这样处理:

img = Image.open("vm.png");
imgry = img.convert("L")
threshold = 140
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
out = imgry.point(table, '1')
out.show()

show()一下处理后的结果:

最后,整合一下:

img = Image.open("vm.png");
imgry = img.convert("L")
threshold = 140
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
out = imgry.point(table, '1')
text = image_to_string(out)
print(text)

我就知道你会回来,如果你在运行中遇到以下问题:


tesseract is not installed or it's not in your path

一图解万愁


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!

添加环境变量:

变量名:TESSDATA_PREFIX
变量值:testdata的路径

如果加了还不行,重启电脑!

如果还不行,试试百度OCR的吧 如果你用来作为验证码识别。可能会用到截屏和裁剪

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CSRF漏洞的原理与防御

    CSRF 全称:Cross Site Request Forgery,译:跨站请求伪造

    Mshu
  • 常用的dos命令

    前言: 95、98、2000、2003、XP、Vista、Windows7、Window8、Window10是图形界面,在这之前是dos界面,现在仍然保持着这个...

    Mshu
  • solr中使用IKAnalyzer配置同义词,停止词,扩展词

    第一步 将IKAnalyzer2012FF_u1放到solr-4.7.2/example/solr-webapp/webapp/WEB-INF/lib 目录下 ...

    Mshu
  • Go指南练习_图像

    还记得之前编写的图片生成器吗?我们再来编写另外一个,不过这次它将会返回一个 image.Image 的实现而非一个数据切片。

    Zoctopus
  • Angular Schematics 三部曲之 Add

    因工作繁忙,差不多有三个月没有写过技术文章了,自八月份第一次编写 schematics 以来,我一直打算分享关于 schematics 的编写技巧,无奈还是拖到...

    叙帝利
  • MapReduce:Google的人间大炮

        对goole这样需要分析处理海量数据的公司来说,普通的编程方法已经不够用了。于是 google开发了MapReduce。简单来说,语法上MapReduc...

    田春峰-JCJC错别字检测
  • Android-PullToRefresh onRefreshComplete()失效问题

    Android-PullToRefresh使用setRefreshing(true)出发刷新后,如果立即调用onRefreshComplete(),下拉刷新的进...

    夏洛克的猫
  • sublime txt 3 自定义设置

    平时用的最多文本工具就是sublime了,当前版本3126。 风格、编码、字符大小、换行、是否使用空格代替tab等都可以在此设置 我自己的设置如下:

    大数据工程师-公子
  • C++20 Coroutine

    最近的新闻里 C++20 已经确认的内容里已经有了协程组件,之前都是粗略看过这个协程草案。最近抽时间更加系统性的看了下接入和实现细节。

    owent
  • Linux下多线程程序为什么消耗大量虚拟内存

    最近游戏已上线运营,进行服务器内存优化,发现一个非常奇妙的问题,我们的认证服务器(AuthServer)负责跟第三方渠道SDK打交道(登陆和充值),由于采用了c...

    Debian社区

扫码关注云+社区

领取腾讯云代金券