系列文章目录
@[TOC](文章目录)
前言
现在OCR技术用的比较广泛,但是大多接口都是需要付费,例如腾讯、百度、阿里
但是当我们想用到里面的文字时,还是要一个字一个字打出来。那么我们能不能直接识别图片中的文字呢?答案是肯定的。接下来我一起来了解一下…
一.Tesseract
官方文档:https://tesseract-ocr.github.io/tessdoc/Data-Files
1.1 Tesseract的安装及配置
Tesseract的安装我们可以进入到该网址 https://digi.bib.uni-mannheim.de/tesseract/,如下图所示:
下载哪个呢?其中w32表示32位系统,w64表示64位系统,大家选择根据自己本地电脑选择下载对应的版本
我这里选择选择下载相对比较新的那
下载速度似乎有点慢
…
等了好久,终于下载好了,直接点击安装
我把这个安装包放入百度云,需要的直接取,下载的话快一点
链接: https://pan.baidu.com/s/12lCzRSZhMo18EIyDfRj5lw 提取码: ir8e
安装路径不建议在C盘,注意安装路径文件夹不要有中文和空格
安装好以后,把刚才安装的路径添加到系统的环境变量当中:D:\testOCR\Tesseract-OCR\tesseract.exe
打开cmd,输入tesseract.exe
1.2 下载语言包
Tesseract默认是不支持中文的,如果想要识别中文或者其它语言需要下载相应的语言包
https://tesseract-ocr.github.io/tessdoc/Data-Files
打开上面这个链接,进入网站,下载我们需要的语言包,我这里下载中文简体语言包,默认就支持英语语言包,就不下载了
这个网站在国外,下载很慢,只能耐心等待…
下载完成后我们需要把下载好的语言包复制到放到Tesseract的路径下的tessdata目录下,我这里的绝对路径是
D:\testOCR\Tesseract-OCR\tessdata
1.3 下载python依赖模块
pip install pytesseract
pip install pillow
二.文字识别
2.1 识别英文
我找了一张全是英文的图片,看它能不能正常识别出来
#! /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
不太顺利,直接报错了,似乎没有找到tesseract
首先找到这个文件
把这里修改为,你本地安装的tesserac的路径,我这里的是
D:\testOCR\Tesseract-OCR\tesseract.exe
在运行试试
这会没有报错了,还有点问题,找找原因,似乎没有指定语言配置,修改一下试试
string = pytesseract.image_to_string(im, lang='eng')
在运行试试
greate,英文完美识别
2.2 识别中文
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