基于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 @   柒路abc  阅读(732)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示