图像识别与文字处理

图像识别与文字处理

为了解决将图像翻译成字符的问题,python中引入了光学字符识别(Optical Character Recognition,OCR)技术,而Tesseract是目前公认最优秀和最精确的开源OCR系统

一.OCR技术概述

光学字符识别(Optical Character Recognition,OCR)是指对包含文本资料的图像资料文件进行分析识别处理,获取文字及版面信息的技术.一般包含以下几个过程:

1.图像识别

针对不同格式的图像,有着不同的存储格式和压缩格式.目前,用于存取图像的开源项目有OpenCVCxImage

2.预处理

预处理主要包括二值化,噪声去除和倾斜较正

3.版面分析

将文档图片分段楼,分行的过程叫作版面分析

二.pytesseract和PIL

1.pytesseract

pytesseract是一款用于光学字符识别(OCR)的python工具,即从图片中识别和读取其中嵌入的文字.pytesseract是对Tesseract-OCR的一层封装,同时也可以单独作为Tesseract引擎的调用脚本,支持使用PIL库(python Imaging Library)读取图片文件类型

pytesseract库中,提供如下函数将图像转换成字符串:

image_to_string(image,lang=None,boxes=False,config=None)

2.PIL

PIL库中一个非常重要的类是Image类,该类定义在与同名的模块中

new()函数

Image.new(mode,size,color=0)

当创建单通道图像时,color是单个值;当创建多通道图像时,color是一个元组.若省略了color参数,则图像被填充成全黑;若color参数的值为None,则图像不被初始化

open()函数

open(fp,mode="r")

三.处理文字

import pytesseract
from PIL import Image

image=Image.open("./data/8_1.png")

text=pytesseract.image_to_string(image)

print(text)
I am happy

hello world
from IPython.display import Image
Image(filename="./data/8_1.png",width=500)

output_24_0.png

默认情况下,pytesseract只能识别英文字符,为了让其支持中文,需要显示地指明使用中文字库.因此在调用image_to_string需要指明语言,即将lang参数的值设为chi_sim

from pytesseract import *
from PIL import Image

data=Image.open("./data/8_2.png")

text=image_to_string(data,lang="chi_sim")

print(text)
. 绢 i[ppg

2. 机 嘴 学 习 概 述 [ppi]
. 线 伯 模 型 [ppg]
i
5 卷 积 神 经 网 绕 [op]
from IPython.display import Image
Image(filename="./data/8_2.png",width=500)

output_27_0.png

四.验证码

Image(filename="./data/8_3.png",width=500)

output_29_0.png

from random import randint
import pytesseract
from PIL import Image

picName=str(randint(0,9))+".png"

image=Image.open("./data/images/"+picName)

text=pytesseract.image_to_string(image)

print(picName+":"+text)
2.png:W 5 4 9
原文地址:https://www.cnblogs.com/LQ6H/p/12940568.html