搭建Windows下PaddleOCR图片文字识别WebAPI

引言:
在现代社会中,文字识别技术被广泛应用于各种场景,如自动化处理、文档数字化等。本文将介绍如何在Windows系统下搭建一个基于PaddleOCR的图片文字识别WebAPI,并详细列出所有步骤和相关代码片段。通过本实例,读者可以快速了解如何搭建一个实用的文字识别服务,并将其应用于实际项目中。

一、环境准备
在进行后续操作之前,需要确保以下环境已经准备好:

  1. 安装了Python的计算机;
  2. 安装了PaddleOCR库;
  3. 安装了Flask框架。

二、安装PaddleOCR库
首先,我们需要安装PaddleOCR库到本地开发环境中。请按照以下步骤进行操作:

  1. 打开命令行工具,进入项目目录;
  2. 运行以下命令安装PaddleOCR库:
    pip install paddlepaddle paddleocr opencv-python flask
    
  3. 安装完成后,我们可以开始编写代码了。

三、创建Flask应用
接下来,我们将创建一个Flask应用来演示如何使用PaddleOCR进行图片文字识别。请按照以下步骤进行操作:

  1. 在命令行工具中输入以下命令创建一个新的Flask应用:
    flask create myapp
    
  2. 进入新创建的应用目录:
    cd myapp
    
  3. 运行以下命令启动应用的开发服务器:
    flask run
    
  4. 打开浏览器,访问 http://localhost:5000,即可看到Flask应用的界面。

四、集成PaddleOCR库
现在,我们将集成PaddleOCR库到我们的应用中。请按照以下步骤进行操作:

  1. 在myapp目录下的app.py文件中引入所需的库:
    from flask import Flask, request, jsonify
    import cv2
    import paddleocr
    
  2. 在app.py文件中添加一个路由,用于处理图片上传和文字识别请求:
    @app.route('/api/recognize', methods=['POST'])
    def recognize():
        # 获取上传的图片文件和配置信息
        image = request.files['image']
        config = request.form['config']
        # ...其他代码省略...
        return jsonify(result) # 返回文字识别结果给前端页面或客户端调用方
    
  3. 在app.py文件中添加一个函数,用于加载模型并进行文字识别:
    def load_model(config):
        # 根据配置信息加载模型和字典文件
        model = paddleocr.det.DetModel(config['model_dir'], config['use_gpu']) # 加载检测模型和字典文件
        if config['use_gpu']:
            model.eval() # 如果使用GPU进行推理,则将模型设置为评估模式以提高性能
        return model, config['lang_dict_path'] # 返回模型和字典文件路径给文字识别函数使用
    
  4. 在app.py文件中添加一个函数,用于进行文字识别:
    def recognize_text(image, model, lang_dict_path):
        # 读取图片并进行预处理(如灰度化、二值化等)
        image = cv2.imdecode(np.frombuffer(image, np.uint8), cv2.IMREAD_COLOR) # 解码图片数据为OpenCV格式的图像对象
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 如果需要,可以将图像从BGR格式转换为RGB格式(可选)
        image = cv2.resize(image, (300, 300)) # 如果需要,可以调整图像的大小(可选)
        # ...其他代码省略...
        # 进行文字识别并返回结果列表(每个字符对应一个文本框)
        result = [] # 存储文字识别结果的列表
        for line in lines: # 遍历每行文本框的位置和得分信息(line[0]为位置信息,line[1]为得分信息)
            box = line[0] # 获取文本框的位置信息(左上角和右下角坐标)
            text = line[1][0] # 获取文本框中的文本内容(即得分最高的字符)
            result.append({'box': box, 'text': text}) # 将文本框的位置和内容添加到结果列表中(可选)
        return result # 返回文字识别结果给调用方使用(可选)
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【资源说明】 基于Flask对PaddleOCR进行部署项目源码+项目操作说明(方便调用).zip ## 目录说明 ``` - caches:上传过来识别的图片 - post - test-post.py:服务请求代码 - demo.jpg:测试图片 - templates:前端界面 - server.py:server端 ``` ## 本地使用 1. csdn下载本项目代码; 2. 安装好本地需要的环境(`paddlepaddle`、`paddleocr`、以及[requirements.txt](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/requirements.txt)); 3. 根据需求,修改`server.py`第97行`IP`(如果本地测试,建议`127.0.0.1`,如果云端部署,建议`0.0.0.0`); 4. 在此文件夹下启用服务: ``` python server.py ''' * Debugger is active! * Debugger PIN: 109-572-001 * Running on http://127.0.0.1:8090/ (Press CTRL+C to quit) ''' ``` 4. 根据输出访问:`http://ip:8090/` ,如果页面可以访问,即表示服务正常启动,可以做请求; ![](./images/2.jpg) 5. 进入`post`文件夹下,修改第4行`url`为上述输出`url`,修改第5行请求的图片名称,终端运行: ``` python test-post.py ''' { "服务状态": "success", "识别时间": "3.2900s", "识别结果": [ "健康宝", "2022年06月02日", "19:38:23", "未见异常②", "④核酸", "阴性", "时间", "#疫苗", "查看", "名", "姓", "李*", "身份证号", "61***", "**28", "查询时间", "06-0214:30", "失效时间", "06-0224:00", "返回首页", ] } ''' ``` ## 云端部署 1. 修改代码`IP`; 2. 放行服务器服务端口,如:8090; > 在一台2核2G的服务器上,服务结果可在2s内返回。 ## 参数说明 - `use_angle_cls true`设置使用方向分类器识别180度旋转文字; - `use_gpu false`设置不使用GPU; - 单独使用检测:设置`rec`为`false`; - 单独使用识别:设置`det`为`false`; - paddleocr默认使用PP-OCRv3模型(`ocr_version=PP-OCRv3`),如需使用其他版本可通过设置参数`ocr_version`,具体版本说明如下: | 版本名称 | 版本说明 | | -------- | -------------------------------------------------- | | PP-OCRv3 | 支持中、英文检测和识别,方向分类器,支持多语种识别 | | PP-OCRv2 | 支持中英文的检测和识别,方向分类器,多语言暂未更新 | | PP-OCR | 支持中、英文检测和识别,方向分类器,支持多语种识别 | - PaddleOCR目前支持80个语种,可以通过修改`lang`参数进行切换,对于英文模型,指定`lang=en`,常用的多语言简写包括: | 语种 | 缩写 | | 语种 | 缩写 | | 语种 | 缩写 | | -------- | ----------- | ---- | -------- | ---- 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coderabo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值