基于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的字库太大了,也可以按需要自己训练字库,这样会大大提升识别准确度,有兴趣可以自行搜索相关文档。
越努力越幸运