Python OCR图形识别、二维码识别

1、 使用pytesseract 进行图形识别

#pytesseract依赖于tesseract,需要先按照tesseract
yum
-y install tesseract #安装完成后查看版本: tesseract -v
#查询可用语言包: yum search tesseract-langpack-
#安装中文简体、繁体语音包,默认支持英文
yum install tesseract-langpack-chi_sim.noarch tesseract-langpack-chi_tra.noarch #查看所支持的语言 tesseract --list-langs #添加环境变量 vim ~/.bash_profile export TESSDATA_PREFIX=/usr/share/tesseract/tessdata export PATH=$PATH:$TESSDATA_PREFIX source ~/.bash_profile #安装pytesseract包 pip3 install pytesseract

通过pytesseract识别图形脚本:

import pytesseract
from PIL import Image
img_path = '/pyenv/ocr01/butie.jpg'
image = Image.open(img_path)
text = pytesseract.image_to_string(image,lang='chi_sim') #指定中文
print(text)

 

2.使用easyocr进行图形识别

#通过pip安装包
pip3 install easyocr -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install pyzbar -i https://pypi.tuna.tsinghua.edu.cn/simple

通过easyocr识别图形脚本:

import easyocr
img_path = 'd:\\butie.jpg'
reader = easyocr.Reader(['ch_sim','en'])
result = reader.readtext(img_path)

for line in result:
    word = line[1]
    print(word)
    # print(f'wenben: {line[1]} (zhixingdu: {line[-1]:.2f})')

首次使用会自动下载中文和英文语言包,如果下载报错,提示SSL证书错误,在脚本开头添加如下内容:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

easyocr手动下载语言包:

访问 https://www.jaided.ai/easyocr/modelhub/ 下载语言包
中文模型文件是 ch_sim.pth,英文是en.pth,下载后将其放到如下目录:
Windows: C:\Users\<YourUsername>\.EasyOCR\model
macOS/Linux: /home/<YourUsername>/.EasyOCR/model

mkdir -p ~/.EasyOCR/model
cd ~/.EasyOCR/model

 注:craft_mlt_25k.pth也需要放到该目录下,否则依然会自动下载

报错“RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR_HOST_ALLOCATION_FAILED”是由于GPU内存不足导致

#禁止使用GPU
reader = easyocr.Reader(['ch_sim','en'],gpu=False)

easyocr安装参考:https://www.cnblogs.com/shootdown/p/18016161

 

3、使用zbar识别二维码

#安装zbar包
yum -y install zbar
#定义函数,识别图中二维码 
def decode_qr_from_img(image_path):
    image = Image.open(image_path)
    decoded_objects = decode(image)
    if decoded_objects:
        for obj in decoded_objects:
            return obj.data.decode('utf-8')  # 解码数据为UTF-8格式的字符串
            # print('Type:', obj.type)
            # print('Rect:', obj.rect)  # 输出二维码在图片中的位置信息

qr_url = decode_qr_from_img(image_content)
print(qr_url)

 

posted on 2025-02-27 15:51  momingliu11  阅读(119)  评论(0)    收藏  举报