私有化部署PaddleOCR图片中文字识别

网极科技1年前代码笔记459

图片文字识别(OCR)的技术目前已经比较成熟,有很多开源模型可以使用。本文主要以百度开源的PaddleOCR为例,进行私有化部署

为什么要进行文字识别私有化

很多图片是比较隐私的,比方身份证,虽然市面上有很多很优质价格也不高的身份证图片识别API(比方我司也有,点此查看)。但是毕竟是隐私内容,图片识别需要上传到公网,公网那边留存多久呢?我司的身份证识别接口是使用的阿里云对象存储定时删除(24小时),该对象存储不对外访问,在一定程度上杜绝了风险以及隐私泄露的可能。
但是要完全杜绝这种可能,私有化是唯一有效的处理方式。

私有化很贵吗?运维很难吗?

私有化不贵而且运维不难,因为我司已经有了成熟的方案,可以直接部署在阿里云函数计算上面,按调用消耗计费,无需预付,每个小时阿里云自动生成账单,用阿里云余额抵扣。综合成本来看,还要比市面上的商用接口便宜很多。
运维上来说,依托阿里云的自动化流水线,可以自动完成性能配置上的弹性伸缩,基本无需运维。

私有化后原来的API接口替换麻烦吗?

私有化后会有新的API接口,可能与原来的API接口的请求方式和返回参数有所区别,需要开发人员稍微修改一下,不是很复杂。

私有化不能离线使用吗?

离线使用是可以的,但是需要本地服务器有GPU,而且运维来说相对麻烦,只能依赖公司内部人员。所以最优解决方案是在阿里云私有化部署。

私有化部署步骤

部署 PaddleOCR 到本地

# 阿里云的镜像仓库地址
docker run -itd --name ppocr -p 9000:9000 registry.cn-hongkong.aliyuncs.com/llapi/ppocr:1.8 /bin/bash -c "sh /PaddleOCR/start.sh"

# 阿里云的镜像仓库地址 服务器端模型
docker run -itd --name ppocr -p 9000:9000 registry.cn-hongkong.aliyuncs.com/llapi/ppocr:1.6.server /bin/bash -c "sh /PaddleOCR/start.sh"

调用 OCR

计算待识别图片的Base64编码
发送服务请求(发送参数,参考下面命令)

curl -H "Content-Type:application/json" -X POST --data "{\"images\": [\"图片base64\"]}"  http://127.0.0.1:9000/predict/ocr_system

返回结果(如果调用成功,会返回如下结果)
{"msg":"","results":[[{"confidence":0.9853195548057556,"text":"测试图像路径,可以是单张图片路径,也可以是图像集合目录路径","text_region":[[5,10],[466,10],[466,24],[5,24]]}]],"status":"000"}

代码示例

import requests
import base64

def ocr(文件地址):
    with open(文件地址, 'rb') as f:
        data = f.read(-1)
    image = str(base64.b64encode(data), encoding='utf-8')
    data = '{"images":["' + image + '"]}'
    txt = requests.post("http://127.0.0.1:9000/predict/ocr_system", data=data,
                        headers={'Content-Type': 'application/json'})
    return txt.content.decode("utf-8")

print(ocr("./test.png"))

相关文章

用伪静态防止恶意下载网站目录下的压缩包

用伪静态防止恶意下载网站目录下的压缩包

起因很多黑客用恶意工具扫描网站目录下的压缩包文件,进行批量下载,导致带宽占满,有时候该压缩包还有可能是网站备份文件,损失不可估量,所以用伪静态的方法,拦截压缩包的后缀,可以起到比较好的效果 抛砖引玉...

解决composer异常 Composer\Downloader\TransportException

解决composer异常 Composer\Downloader\TransportException

Composer在腾讯或阿里的服务器上经常会遇到报出如下异常: [Composer\Downloader\TransportException]...

利用php函数获取中文汉字拼音首字母

利用php函数获取中文汉字拼音首字母

要获取中文汉字拼音的首字母,你可以使用第三方库,例如 pinyin。以下是使用 pinyin 库的示例代码: 首先,你需要安装 pinyin 库。你可以通过 Composer 进行安装,在项目根目录...

PHP7.1+ 7.2 7.4 json_encode 造成float数据精度异常情况

PHP7.1+ 7.2 7.4 json_encode 造成float数据精度异常情况

php7.1+版本进行json处理时,精度异常到很长的数值如下图本来原数据是没有这么大的精度的,小数点后面2-4位而已,而经过json_encode处理后就成这样的了。解决办法,给php文件开头加下如...

【精选】PHP将股票日K线数据转换为周K线数据

【精选】PHP将股票日K线数据转换为周K线数据

可以使用PHP来将股票日K线数据转换为周K线数据。具体实现方法如下:获取日K线数据,例如从数据库中查询出所有日期的股票数据,保存在一个数组中,每个元素包含如下信息: $day_data = [...

https网页无法加载http的文件,给html头部添加一段代码搞定

https网页无法加载http的文件,给html头部添加一段代码搞定

在强制要求https协议的情况下,一年一签的SSL很多时候忘记续签,导致成为http协议,进而引发文件加载不到的问题 https与http能否共存https地址中,如果加载了http资源,浏...