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

最近在研究百度的开源的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框架。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值