初体验python图片识别文字【Tesseract】OCR技术

系列文章目录


@[TOC](文章目录)

前言

现在OCR技术用的比较广泛,但是大多接口都是需要付费,例如腾讯、百度、阿里
初体验python图片识别文字【Tesseract】OCR技术

但是当我们想用到里面的文字时,还是要一个字一个字打出来。那么我们能不能直接识别图片中的文字呢?答案是肯定的。接下来我一起来了解一下…

一.Tesseract

官方文档:https://tesseract-ocr.github.io/tessdoc/Data-Files

1.1 Tesseract的安装及配置

Tesseract的安装我们可以进入到该网址 https://digi.bib.uni-mannheim.de/tesseract/,如下图所示:
初体验python图片识别文字【Tesseract】OCR技术
下载哪个呢?其中w32表示32位系统,w64表示64位系统,大家选择根据自己本地电脑选择下载对应的版本
我这里选择选择下载相对比较新的那
初体验python图片识别文字【Tesseract】OCR技术
下载速度似乎有点慢


等了好久,终于下载好了,直接点击安装
我把这个安装包放入百度云,需要的直接取,下载的话快一点
链接: https://pan.baidu.com/s/12lCzRSZhMo18EIyDfRj5lw 提取码: ir8e初体验python图片识别文字【Tesseract】OCR技术
初体验python图片识别文字【Tesseract】OCR技术
初体验python图片识别文字【Tesseract】OCR技术
安装路径不建议在C盘,注意安装路径文件夹不要有中文和空格
初体验python图片识别文字【Tesseract】OCR技术

安装好以后,把刚才安装的路径添加到系统的环境变量当中:D:\testOCR\Tesseract-OCR\tesseract.exe
初体验python图片识别文字【Tesseract】OCR技术
打开cmd,输入tesseract.exe

1.2 下载语言包

Tesseract默认是不支持中文的,如果想要识别中文或者其它语言需要下载相应的语言包
https://tesseract-ocr.github.io/tessdoc/Data-Files
打开上面这个链接,进入网站,下载我们需要的语言包,我这里下载中文简体语言包,默认就支持英语语言包,就不下载了

初体验python图片识别文字【Tesseract】OCR技术

这个网站在国外,下载很慢,只能耐心等待…
初体验python图片识别文字【Tesseract】OCR技术

下载完成后我们需要把下载好的语言包复制到放到Tesseract的路径下的tessdata目录下,我这里的绝对路径是

D:\testOCR\Tesseract-OCR\tessdata

1.3 下载python依赖模块

pip install pytesseract
pip install pillow

二.文字识别

2.1 识别英文

我找了一张全是英文的图片,看它能不能正常识别出来
初体验python图片识别文字【Tesseract】OCR技术

#! /usr/bin/python
import pytesseract
from PIL import Image
# 读取图片
#C:/Program Files (x86)/Tesseract-OCR/tesseract.exe
im = Image.open('ocr.png')
# 识别文字
string = pytesseract.image_to_string(im)
print(string)

运行demo
初体验python图片识别文字【Tesseract】OCR技术
不太顺利,直接报错了,似乎没有找到tesseract
首先找到这个文件
初体验python图片识别文字【Tesseract】OCR技术
初体验python图片识别文字【Tesseract】OCR技术
把这里修改为,你本地安装的tesserac的路径,我这里的是

D:\testOCR\Tesseract-OCR\tesseract.exe

初体验python图片识别文字【Tesseract】OCR技术

在运行试试
初体验python图片识别文字【Tesseract】OCR技术
这会没有报错了,还有点问题,找找原因,似乎没有指定语言配置,修改一下试试

string = pytesseract.image_to_string(im, lang='eng')

在运行试试
初体验python图片识别文字【Tesseract】OCR技术
greate,英文完美识别

2.2 识别中文

初体验python图片识别文字【Tesseract】OCR技术

import pytesseract
from PIL import Image
im = Image.open('chinese.png')
# 识别文字
string = pytesseract.image_to_string(im, lang='chi_sim')
print(string)

运行一下看看效果:
在测试过程中发现,Tesseract对手写体、行楷等飘逸的字体识别不准确,对一些复杂的字识别也有待提升。但是宋体、印刷体等笔画严谨的字体识别准确率很高。另外如果图片的倾斜大于一定的角度,识别结果也会有很大差别。

参考文章

1.https://www.jb51.net/article/187678.htm

上一篇:调用百度OCR接口识别身份证 微信小程序


下一篇:财务管理期末作业思路分享——财务管理小程序 (邮件、发票OCR、查询等功能)