Hadoop 计算机网络 arrays replace matlab向上取整 download grid Semantic UI 八大员 网站后台管理模板 android项目实例 nginx教程视频 android富文本框架 python生成多个随机数 python课程 python随机整数 python用什么ide javafile java抽象 java中的对象 java操作数据库 java接口规范 java接口调用 linux磁盘管理 怎么安装linux php入门例子 decimalformat win10长期服务版 ad下载 php购物车 html5下载 bz2 steam怎么卸载 python数组赋值 xmind画流程图 蜘蛛皮肤 asp程序下载 文件粉碎工具 神牧属性 python编辑器
当前位置: 首页 > 学习教程  > python

基于PaddlePaddle的OCR识别,识别车牌号

2021/2/8 12:45:27 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

最近在研究百度的开源的OCR识别框架PaddlePaddle,虽然它的教程很详细,但对大多数人来说,其实我只想用其中某一个功能,能有个快速让我部署的方式就好了。我搜索了很多资料,最后自己做了一个docker镜像,可以完…

最近在研究百度的开源的OCR识别框架PaddlePaddle,虽然它的教程很详细,但对大多数人来说,其实我只想用其中某一个功能,能有个快速让我部署的方式就好了。我搜索了很多资料,最后自己做了一个docker镜像,可以完成快速部署。

下面例子就是快速部署一个可以识别车牌的系统。

1.搭建

  1. 启动容器,映射8080端口,其实就是一个web网站,可以通过以下地址访问:http://xxx.xxx.xxx.xxx:8080/predict/chinese_ocr_db_crnn_server
mkdir -p /data/paddle
chown -R 1000:1000 /data/paddle
docker run -d --name paddle -p 8080:8866 -v /data/paddle:/paddle wjf8882300/paddle:2.0.0
  1. 写一段官方的python代码测试下,把图片传给它,它返回一段数据就是识别后的结果。
import requests
import json
import cv2
import base64

# 把图片转为base64码
def cv2_to_base64(image):
    data = cv2.imencode('.jpg', image)[1]
    return base64.b64encode(data.tostring()).decode('utf8')

# 发送HTTP请求
data = {'images':[cv2_to_base64(cv2.imread("e:/data/1.jpg"))]}
headers = {"Content-type": "application/json"}
url = "http://xxx.xxx.xxx.xxx:8080/predict/chinese_ocr_db_crnn_server"
r = requests.post(url=url, headers=headers, data=json.dumps(data))

# 打印预测结果
print(r.json()["results"])

安装python依赖包

# cv2
pip3 install opencv-python -i https://mirror.baidu.com/pypi/simple

2.测试

待识别图片:
在这里插入图片描述

输出效果:可以看到有E·05EV8

[{'data': [{'confidence': 0.9619042277336121, 'text': 'E·05EV8', 'text_box_position': [[99, 197], [360, 197], [360, 270], [99, 270]]}, {'confidence': 0.5242013931274414, 'text': '苏办', 'text_box_position': [[82, 207], [112, 207], [112, 259], [82, 259]]}], 'save_path': ''}]

至此已经全部结束,识别系统搭建完毕,有兴趣的可以继续看下关于镜像的介绍。

3.镜像说明

制作镜像的原因是我在看官方教程的时候走了不少弯路,开源的框架分了很多模块,上手不容易,也许我太笨了。
Dockerfile

# 百度paddlepaddle 2.0官方镜像,它是基于ubuntu的
FROM paddlepaddle/paddle:2.0.0

# 解决时区问题
RUN apt-get install -y tzdata 
ENV TZ Asia/Shanghai
RUN /bin/cp /usr/share/zoneinfo/${TZ} /etc/localtime && echo '${TZ}' >/etc/timezone

# 安装paddlehub以及相关依赖
# 这边特别要注意,开源文档里面很多地方直接用hub install这个命令,是基于paddlehub安装成功的情况下,之前我看了半天也没看明白,所以说我笨呢
RUN pip3 install paddlehub shapely pyclipper matplotlib scipy==1.2.1 --upgrade -i https://mirror.baidu.com/pypi/simple
# 安装中文字识别模块
RUN hub install chinese_ocr_db_crnn_server==1.0.3

# 这个是启动脚本
COPY ./docker-entrypoint.sh ./docker-entrypoint.sh
ENTRYPOINT ["./docker-entrypoint.sh"]

docker-entrypoint.sh

#!/bin/bash
# 启动中文识别模块,这个服务默认8866端口,这也是为什么上面启动的时候要映射这个端口
hub serving start -m chinese_ocr_db_crnn_server

4.最后

经过测试,这个识别效果比较一般,目前车牌是没问题的,不过发票识别不了,火车票也不行,识别之后就崩掉了。要达到预期,还是要更深入的学习PaddlePaddle框架。


本文链接: http://www.dtmao.cc/news_show_2000348.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?