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)
浙公网安备 33010602011771号