【PaddleOCR使用记录】

paddleOCR官方地址:https://www.paddlepaddle.org.cn/hub/scene/ocr
零基础教学地址:https://github.com/PaddlePaddle/PaddleHub/blob/release/v2.1/docs/docs_ch/get_start/windows_quickstart.md

安装paddle

paddle其实跟PyTorch是同级的。之前已经有配置Anaconda和CUDA,就直接打开Anaconda Prompt创建新环境paddele_env。

conda create --name paddle_env python=3.8 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

激活环境conda activate paddle_env
检查where等之后安装合适的GPU版本的paddle

python -m pip install paddlepaddle-gpu==2.6.0.post117 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

Successfully installed Pillow-10.2.0 anyio-4.3.0 astor-0.8.1 certifi-2024.2.2 decorator-5.1.1 exceptiongroup-1.2.0 h11-0.14.0 httpcore-1.0.4 httpx-0.27.0 idna-3.6 numpy-1.24.4 opt-einsum-3.3.0 paddlepaddle-gpu-2.6.0.post117 protobuf-3.20.2 sniffio-1.3.1 typing-extensions-4.10.0

安装paddlehub:

pip install paddlehub -i https://mirror.baidu.com/pypi/simple

Successfully installed Babel-2.14.0 Flask-Babel-4.0.0 Jinja2-3.1.3 Werkzeug-3.0.1 aiofiles-23.2.1 aiohttp-3.9.3 aiosignal-1.3.1 altair-5.2.0 annotated-types-0.6.0 async-timeout-4.0.3 attrs-23.2.0 bce-python-sdk-0.9.4 blinker-1.7.0 charset-normalizer-3.3.2 click-8.1.7 colorama-0.4.6 colorlog-6.8.2 contourpy-1.1.1 cycler-0.12.1 datasets-2.16.1 dill-0.3.4 easydict-1.11 fastapi-0.109.2 ffmpy-0.3.1 filelock-3.13.1 flask-3.0.2 fonttools-4.50.0 frozenlist-1.4.1 fsspec-2023.10.0 future-0.18.3 gradio-4.19.0 gradio-client-0.10.0 huggingface-hub-0.20.3 importlib-metadata-7.0.1 importlib-resources-6.1.1 itsdangerous-2.1.2 jieba-0.42.1 joblib-1.3.2 jsonschema-4.21.1 jsonschema-specifications-2023.12.1 kiwisolver-1.4.5 markdown-it-py-3.0.0 markupsafe-2.1.5 matplotlib-3.7.4 mdurl-0.1.1 multidict-6.0.5 multiprocess-0.70.12.2 onnx-1.15.0 opencv-python-4.9.0.80 orjson-3.9.13 packaging-23.2 paddle2onnx-1.0.6 paddlefsl-1.1.0 paddlehub-2.4.0 paddlenlp-2.6.1 pandas-2.0.3 pkgutil-resolve-name-1.3.10 psutil-5.9.8 pyarrow-15.0.0 pyarrow-hotfix-0.6 pycryptodome-3.20.0 pydantic-2.6.1 pydantic-core-2.16.2 pydub-0.25.1 pygments-2.17.2 pyparsing-3.1.1 python-dateutil-2.8.2 python-multipart-0.0.7 pytz-2024.1 pyyaml-6.0.1 pyzmq-25.1.2 rarfile-4.1 referencing-0.33.0 requests-2.31.0 rich-13.7.0 rpds-py-0.17.1 ruff-0.2.0 safetensors-0.4.2 scikit-learn-1.3.2 scipy-1.10.1 semantic-version-2.10.0 sentencepiece-0.1.99 seqeval-1.2.2 shellingham-1.5.4 six-1.16.0 starlette-0.36.3 threadpoolctl-3.2.0 tomlkit-0.12.0 toolz-0.12.1 tqdm-4.66.1 typer-0.9.0 tzdata-2023.4 urllib3-2.2.0 uvicorn-0.27.0.post1 visualdl-2.5.3 websockets-11.0.3 xxhash-3.4.1 yarl-1.9.4 zipp-3.17.0

安装模型

 hub install ch_pp-ocrv3==1.2.0

模型调用

命令行

hub run ch_pp-ocrv3 --input_path “/PATH/TO/IMAGE”

python

import paddlehub as hub
import cv2

img_path = r'C:\Users\26414\Downloads\test.jpg'

ocr = hub.Module(name="ch_pp-ocrv3", enable_mkldnn=True)       # mkldnn加速仅在CPU下有效
result = ocr.recognize_text(images=[cv2.imread(img_path)])

# or 传递文件地址调用
# result = ocr.recognize_text(paths=[img_path])

视频识别

import cv2
import paddlehub as hub
import numpy as np
from PIL import ImageFont, ImageDraw, Image
import time

def draw_text(img, text, pos, font_path="C:\\Windows\\Fonts\\msyh.ttc", font_size=20, font_color=(0, 255, 0)):
    """
    使用Pillow来绘制中文文本。
    :param img: 原始图片
    :param text: 要绘制的文本
    :param pos: 文本的位置
    :param font_path: 字体文件的路径
    :param font_size: 字体大小
    :param font_color: 字体颜色
    :return: 带有文本的图片
    """
    img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    draw = ImageDraw.Draw(img_pil)
    font = ImageFont.truetype(font_path, font_size)
    draw.text(pos, text, font=font, fill=font_color)
    return cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)






# 初始化OCR模型
ocr = hub.Module(name="ch_pp-ocrv3")

# 打开视频文件
video_path = r'D:\cdfgroup\Military\video\front1.mp4'  # 更改为你的视频路径
video_save_path = r'D:\cdfgroup\Military\python\ocr_result\front1result1.avi'  # 更改为保存视频的路径
video_fps = 25.0  # 可以根据视频实际情况调整

capture = cv2.VideoCapture(video_path)
if video_save_path != "":
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    out = cv2.VideoWriter(video_save_path, fourcc, video_fps, size)

fps = 0.0
while True:
    t1 = time.time()
    ref, frame = capture.read()
    if not ref:
        break

    # 使用PaddleOCR进行文字识别
    result = ocr.recognize_text(images=[frame], visualization=False)

    # 对识别结果进行处理,例如在帧上绘制识别到的文本
    for res in result[0]['data']:
        text = res['text']
        position = res['text_box_position']
        # 在帧上绘制文本和边框
        cv2.rectangle(frame, (position[0][0], position[0][1]), (position[2][0], position[2][1]), (0, 255, 0), 2)
        #cv2.putText(frame, text, (position[0][0], position[0][1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
        frame = draw_text(frame, text, (position[0][0], position[0][1] - 10), font_path="C:\\Windows\\Fonts\\msyh.ttc")

    fps = (fps + (1. / (time.time() - t1))) / 2
    print("fps= %.2f" % (fps))
    frame = cv2.putText(frame, "fps= %.2f" % (fps), (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

    cv2.imshow("video", frame)
    c = cv2.waitKey(1) & 0xff
    if video_save_path != "":
        out.write(frame)

    if c == 27:  # 按Esc键退出
        break

capture.release()
if video_save_path != "":
    out.release()
cv2.destroyAllWindows()

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值