基于opencv的OCR识别

发布时间 2023-05-06 16:02:34作者: 柒路abc

前言

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

运行环境

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