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

网极科技2年前代码笔记1108

图片文字识别(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"))

相关文章

宝塔面板Nginx设置任意路径301重定向

宝塔面板Nginx设置任意路径301重定向

接到一个客户的诉求,需要将指定路径进行301重定向,由于宝塔设置重定向只有域名(即根目录),无法对子目录或其他任意路径进行重定向,所以需要手写Nginx的重定向规则。 301重定向和伪静态有...

php绕过cloudfare进行网址数据采集,php网页采集程序

php绕过cloudfare进行网址数据采集,php网页采集程序

程序功能本程序使用浏览器内核,可伪装浏览器,对任意网址进行数据采集,采集结果以php程序进行二次处理。 支持对于单个网址进行采集,可自由设置循环次数。可多开不受限制。程序会调用浏览器内核打开网页...

火车头采集分页多页数据

火车头采集分页多页数据

在使用火车头采集器时,遇到有分页多页的情况出现,可进行如下设置进行采集1 在第二步,采集内容规则中设置“分页获取规则”,即页码标签位置2 在标签编辑页面勾选  该标签在分页中匹配 ...

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

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

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

使用xbstream打包的物理备份恢复腾讯云云数据库MySQL数据库

使用xbstream打包的物理备份恢复腾讯云云数据库MySQL数据库

腾讯云为节约存储空间,云数据库 MySQL 的物理备份和逻辑备份文件,都会先经过 qpress 压缩,后经过 xbstream 打包(xbstream 为 Percona 的一种打包/解包工具)进行压...

使用xunsearch进行php全文检索

使用xunsearch进行php全文检索

迅搜(xunsearch)是采用 C/C++ 基于 xapian 和 scws 开发的全文搜索引擎解决方案,适用于php全文检索、mysql全文检索和各种站内搜索。支持海量数据高速检索,功能强大、...