(摘) Paddleocr 飞桨 Python的OCR库

声明:内容源自网络,版权归原作者所有。若有侵权请在网页聊天中联系我

之前有文章: https://i.scwy.net/code/2022/100614-paddleocr/ 但似乎原文件遗失,这里再补一下.

Github
我在Win10下搭建没有什么问题,识别率还是不错.可惜在Pi Zero上没有搭建成功.也试了tesseract-ocr,识别率很低.
如果不怕麻烦,可以自己搭建一个OCR服务器,加上手机截图,就可以继续之前暂停的"个人微信自动收钱并识别"的功能.

adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png
from paddleocr import PaddleOCR, draw_ocr
# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
img_path = 'pay.png'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line[1][0])

安装:

  1. pip3保持最新: pip3 install –upgrade pip
  2. 如果使用GPU: python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
  3. 如果使用CPU: python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
  4. 安装PaddleOCR whl包: pip install “paddleocr>=2.0.1” # 推荐使用2.0.1+版本

paddleocr默认使用PP-OCRv3模型,以下命令指令了模型版本,原意是想加速,似乎没啥变化.
paddleocr –image_dir cp4.jpg –lang=ch –ocr_version PP-OCR

手机截图再传的方式增加了一个中间环节,可以直接读取stout.其中要解决一个回车的行符的问题.

from PIL import Image
import io
 
def capture() -> bytes:
    process = subprocess.Popen(
        'adb shell screencap -p',
        shell=True, stdout=subprocess.PIPE)
    data = process.stdout.read()
    data = data.replace(b'\r\n', b'\n')
    return data

# 获取屏幕截图的字节数据
data = capture()
# 将字节数据转换为Image对象
image = Image.open(io.BytesIO(data))
# 保存Image对象为PNG格式的图片
image.save('screenshot.png', 'PNG')

相关文章