基于Python的OCR图像识别

前言

由于目前做的项目里面有些地方的需要用到图像文字识别,因此在此总结下,以下方法适合新手

1、使用python的pytesseract库

主要是安装库,比较简单,直接使用 pip install 安装即可;另外,如果进行中文识别,需要下载语言包,并配置好相应环境,具体操作可以进行百度,教程有不少。因为这个识别方法比较简单(但效果并不是很理想),

(1)Tesseract的安装及配置

Tesseract的安装我们可以移步到该网址 https://digi.bib.uni-mannheim.de/tesseract/,里面有很多版本供大家选择,其中w32表示32位系统,w64表示64位系统,大家可以根据自己的需求选择。

下载完成后,安装我们需要知道我们安装的位置,将安装目录配置到系统path变量当中,例如路径是D:\Tesseract-OCR

基于Python的OCR图像识别_第1张图片

我们右击我的电脑/此电脑->属性->高级系统设置->环境变量->Path->编辑->新建然后将我们的路径复制进去即可。添加好系统变量后后我们还需要依次点确定

(2)下载语言包

Tesseract默认是不支持中文的,如果想要识别中文或者其它语言需要下载相应的语言包

下载地址如下: https://tesseract-ocr.github.io/tessdoc/Data-Files 

其中有两个中文语言包,一个Chinese-Simplified和Chinese-Traditional,它们分别是简体中文和繁体中文,我们选择需要的下载即可。下载完成后我们需要放到Tesseract的路径下的tessdata目录下,例如D:\Tesseract-OCR\tessdata。

(3)其它模块下载

除了上面的步骤,我们还需要下载两个模块:

pip install pytesseract
pip install pillow

下面直接贴出测试代码:

import pytesseract
from PIL import Image
# 读取图片
im = Image.open('img11.png')
# 识别文字,并指定语言
string = pytesseract.image_to_string(im, lang='chi_sim')
print(string)

因为默认是支持英文的,设置lang='chi_sim',是把语言设置为简体中文,这种效果不是很好,适合那种简单的识别。

2、调用百度AI平台接口

调用百度AI平台接口会有调用次数限制,通用50000次/天,但学习完全够用

这个类似于调用接口实现词法分析等操作,首先通过注册获得APP_ID、API_KEY、SECRET_KEY,然后调用接口实现OCR。由于是在线API,如果图片体积比较大,涉及到上传数据、分析数据、返回数据等一系列操作,需要一定的时间。此外,因为返回的是 dict 类型数据,所以需要对结果进行处理(这套算法是按行识别文字的,准确率较高,基本可以直接将结果进行提取和拼接)。实现起来比较简单,下面直接贴出代码:

from aip import AipOcr
APP_ID = '00000000'
API_KEY = '00000000000000000000'
SECRET_KEY = '00000000000000000000'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
 
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
 
def image2text(fileName):
    image = get_file_content(fileName)
    dic_result = client.basicGeneral(image)
    res = dic_result['words_result']
    result = ''
    for m in res:
        result = result + str(m['words'])
    return result
 
getresult = image2text('./test01.jpg')
print(getresult)

现在工作中调用的是鹅厂内部自己开发的OCR识别系统,识别场景和准确率确实高很多,下一步也该想想提高准确率,毕竟这两个是别人开发调用的,最好是自己训练模型~

你可能感兴趣的:(python-爬虫,扩展知识)