PyCharm运行百度图片识别 PaddleOCR,并使用Docker部署PaddleOCR

PyCharm运行百度图片识别 PaddleOCR,并使用Docker部署PaddleOCR

简介

在这里插入图片描述

基于飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。

本地运行测试

1. 查看python环境

在这里插入图片描述

2.下载PaddleOCR模型库

下载地址
在这里插入图片描述

3.PyCharm新建项目

新增inference文件夹,存放ocr模型
新增images文件夹存放要识别的图片

在这里插入图片描述
在这里插入图片描述

要识别的图片素材
在这里插入图片描述

4.编写Python测试代码main.py

from paddleocr import PaddleOCR

if __name__ == '__main__':
    print("====================paddleocr start====================")
    ocr = PaddleOCR(use_angle_cls=True, use_gpu=False, det_model_dir=r"./inference/ch_ppocr_server_v1.1_det_infer",
                    rec_model_dir=r"./inference/ch_ppocr_server_v1.1_rec_infer",
                    cls_model_dir=r"./inference/ch_ppocr_mobile_v1.1_cls_infer")  # 使用CPU预加载,不用GPU
    text_list = ocr.ocr("./images/11.jpg", cls=True)  # 打开图片文件
    # print(text)

    # 打印所有文本信息
    tiny_dict = {}
    for t in text_list:
        i = 0
        for str_list in t:
            i += 1
            tiny_dict.update({'key'+str(i): str_list[-1][0]})
    print(tiny_dict)
    print("====================paddleocr start====================")

5.识别结果

在这里插入图片描述

遇到的问题

paddleocr 爆红

在这里插入图片描述
在这里插入图片描述

整合Flask

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

新增baidu_ocr.py文件

from flask import Flask, request
from paddleocr import PaddleOCR
import os

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = './images/'
"""
图片识别
"""


@app.route('/baidu_ocr/<string:file_name>', methods=["GET"])
def baidu_ocr(file_name):
    ocr = PaddleOCR(use_angle_cls=True, use_gpu=False, det_model_dir=r"./inference/ch_ppocr_server_v1.1_det_infer",
                    rec_model_dir=r"./inference/ch_ppocr_server_v1.1_rec_infer",
                    cls_model_dir=r"./inference/ch_ppocr_mobile_v1.1_cls_infer")  # 使用CPU预加载,不用GPU
    text_list = ocr.ocr(f"./images/{file_name}", cls=True)  # 打开图片文件
    tiny_dict = {}
    for t in text_list:
        i = 0
        for str_list in t:
            i += 1
            tiny_dict.update({'key' + str(i): str_list[-1][0]})
    print(tiny_dict)
    return tiny_dict


"""
图片上传并识别
"""


# 图片上传
@app.route('/upload_file', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        # input标签中的name的属性值
        f = request.files['file']
        # 拼接地址,上传地址,f.filename:直接获取文件名
        f.save(os.path.join(app.config['UPLOAD_FOLDER'], f.filename))
        print(request.files, f.filename)
    ocr = PaddleOCR(use_angle_cls=True, use_gpu=False, det_model_dir=r"./inference/ch_ppocr_server_v1.1_det_infer",
                    rec_model_dir=r"./inference/ch_ppocr_server_v1.1_rec_infer",
                    cls_model_dir=r"./inference/ch_ppocr_mobile_v1.1_cls_infer")  # 使用CPU预加载,不用GPU
    text_list = ocr.ocr("./images/"+str(os.path.join(f.filename)), cls=True)  # 打开图片文件
    tiny_dict = {}
    for t in text_list:
        i = 0
        for str_list in t:
            i += 1
            tiny_dict.update({'key' + str(i): str_list[-1][0]})
    print(tiny_dict)
    return tiny_dict


if __name__ == '__main__':
	# docker部署需要设置,否则无法访问
    app.run(host='0.0.0.0', port='3000')

docker部署

1.项目根目录加DockerFile

FROM python:3.9.12
#代码添加到code文件夹
ADD ./baidu_ocr /code

# 设置code文件夹是工作目录
WORKDIR /code

# 安装支持
RUN pip install --upgrade pip
RUN pip install paddlepaddle==2.1.1 -i https://mirror.baidu.com/pypi/simple
RUN pip install Flask==2.2.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install paddleocr==2.6.1.3 -i https://mirror.baidu.com/pypi/simple
RUN pip install Werkzeug==2.2.2 -i https://mirror.baidu.com/pypi/simple
RUN pip install opencv-python-headless -i https://pypi.douban.com/simple
#RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple


ADD ./ocrTest /code
CMD ["python3", "/code/baidu_ocr.py"]

2.打包压缩包上传到服务器

3.解压项目baidu_ocr

4.将DockerFile移动到与项目平级目录

在这里插入图片描述

5.构建docker镜像

docker build  -t baidu-ocr .

6.运行镜像

docker run -d -it -p 3000:3000 --name baidu-ocr baidu-ocr

在这里插入图片描述

7.PostMan调用接口上传图片识别测试

查看IP地址

在这里插入图片描述

在这里插入图片描述

### 如何在 PyCharm 中实现 PaddleOCR 的本地部署 #### 准备工作 为了确保能够在 PyCharm 中成功部署 PaddleOCR,需先确认 Python 版本兼容性更新 `pip` 工具至最新版本。对于 Python 3.7 环境而言,可以通过如下命令来执行 `pip` 更新操作[^2]: ```bash python3.7 -m pip install --upgrade pip ``` #### 创建虚拟环境 建议创建一个新的虚拟环境用于隔离项目依赖项。这有助于避免不同项目的库之间发生冲突。 #### 安装 PaddleOCR 及其依赖包 一旦准备就绪,在激活的环境中通过 Pip 安装 PaddleOCR 库及其必要的依赖组件。通常情况下,只需一条简单的指令即可完成安装过程: ```bash pip install paddleocr ``` #### 初始化 OCR 实例 初始化一个 OCR 对象实例以便后续调用识别功能。这里展示了一个中文文字检测与识别的例子,其中启用了角度分类选项以提高准确性[^3]: ```python from paddleocr import PaddleOCR # 配置参数加载预训练模型到内存中 ocr = PaddleOCR(use_angle_cls=True, lang="ch") ``` #### 编写测试代码 编写一段简单脚本来验证设置是否正确无误。这段代码会读取图片文件路径作为输入,输出经过处理后的文本结果。 ```python import cv2 from PIL import Image def ocr_test(image_path): img = Image.open(image_path).convert('RGB') result = ocr.ocr(img, cls=True) for line in result: print(line) if __name__ == "__main__": image_file = "path/to/your/image.png" ocr_test(image_file) ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值