基于opencv的OCR识别

前言

最近项目需要识别图片中的文字,实现之后把流程记录一下,希望对你有所帮助。

运行环境

win10,python3.8,opencv-python==4.7.0.68,pytesseract(需另外下载安装,请根据自己环境自行选择版本,dev表示正式版,beta测试版,w32位,W64位)

引用上述安装好的pytesseract

指定配合opencv图片文字解析的程序

class OCR():
def init(self):
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract.exe'

主程序

-- codeing = utf-8 --

import pytesseract
from PIL import Image
import cv2

class OCR():
def init(self):
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files/Tesseract-OCR/tesseract.exe'

通用性中文识别

def getocrtext(self, img):
# 加载图片
# img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# img = Image.open(imgpath)
#图片转为二值图
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

根据需求再将图片变为黑白图片(灰度值大于127的重置像素值为255,否则重置像素值为0,也就是通过阈值127将图像二值化-要么黑要么白)

ret, img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

显示图片

cv2.imshow("image", img)

cv2.waitKey(0)

查看当前支持的语言格式

print(pytesseract.get_languages())

可组合查询 lang='chi_sim+eng' 表示 简体中文 + 英文

text = pytesseract.image_to_string(img, lang='chi_sim')

print("已识别文字-->", text)

return text

if name == "main":
imgpath = '../test.png' #测试图片路径
imgpath = cv2.imread(imgpath)
OCR = OCR()
text = OCR.getocrtext(imgpath)
# print(text)

后续

这只是浅浅实现OCR识别,你也可以选择主流的百度ocr,阿里云ocr,pytesseract的字库太大了,也可以按需要自己训练字库,这样会大大提升识别准确度,有兴趣可以自行搜索相关文档。

posted @ 2023-05-06 15:59  柒路abc  阅读(821)  评论(0)    收藏  举报