OCR文字识别

  • 关于OCR
  • 介绍
  • 前提准备
  • 环境配置
  • 文件创建
  • 代码实现
  • 导库
  • 定义一个文字识别类
  • 选取所需识别的文字信息
  • 执行
  • 结果
  • 乱码情况处理


关于OCR

介绍

“OCR 是英文Optical Character Recognition的缩写。

pytesseract 中文识别 指定模型路径_Image


意思是光学字符识别,也可简单地称为文字识别,是文字自动输入的一种方法。它通过 扫描 和摄像等光学输入方式获取纸张上的文字图像信息,利用各种 模式 识别算法分析文字形态特征 可以将票据、报刊、书籍、文稿及其它印刷品转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术。可应用于银行票据、大量文字资料、档案卷宗、文案的录入和处理领域。适合于银行、税务等行业大量票据表格的自动扫描识别及长期存储。

前提准备

环境配置

环境

版本

Python

3.7

Pytesseract

0.3.7

PIL

1.1.6

下载好Pytesseract与PIL

pytesseract 中文识别 指定模型路径_Image_02

pytesseract 中文识别 指定模型路径_python_03

文件创建

在环境下新建一个目录,在目录中创建py文件,以及放入需文字识别的图片。

pytesseract 中文识别 指定模型路径_python_04

代码实现

导库

第一步导入所需的库

import pytesseract
from PIL import Image
import os
import warnings; warnings.filterwarnings('ignore')

定义一个文字识别类

在类中分别定义常用语言中文与英文的方法

class Get_Char:
    def get_En(self):
        p1 = Image.open(f'../AI_learning/{self}') #	相对路径
        str1 = pytesseract.image_to_string(p1)
        # print(str1)
        os.system(f'echo {str1}')

    def get_Ch(self):
        p2 = Image.open(f'../AI_learning/{self}') 
        str2 = pytesseract.image_to_string(p2, lang='chi_sim')
        # print(str2)
        os.system(f'echo {str2}')

选取所需识别的文字信息

以下图为例,

英文图片:

pytesseract 中文识别 指定模型路径_文字识别_05


中文图片:

pytesseract 中文识别 指定模型路径_代码实现_06

执行

if __name__ == '__main__':
    Get_Char.get_En('en1.png')
    Get_Char.get_Ch('ch1.png')

结果

pytesseract 中文识别 指定模型路径_python_07

乱码情况处理

pytesseract 中文识别 指定模型路径_代码实现_08


假如中文出现乱码,则需在settings中设置编码形式

pytesseract 中文识别 指定模型路径_代码实现_09


在file encodings中的project encoding设置为GBK即可

pytesseract 中文识别 指定模型路径_代码实现_10


修改后,完成

pytesseract 中文识别 指定模型路径_python_07