中文WebOCR

起因


有一天,客户王总找到我。

王总:小马啊,我用你们的产品啊,老是报错,你能给我解决一下吗?

我:王总好~ 当然没问题,您方便把错误发给我看下吗?

王总:


我:王总,您能复制一下中间错误的ID吗?

王总:不能。

我:好的,没关系,我给您手敲,谢谢~

关键词

步骤

关于中文OCR

我当然不会给王总去手敲那一大长串的id,其实我敲了,也不算长嘛,也就三十几个数字加字母,中间还错了2次

但是在这之前,我是尝试搜索了一下的,市面上有很多在线识别的网站,但是它们都很垃圾,要么是等待时间长,要么是要求付费。

最恶心的是有的网站在等待了1分多钟之后,提示识别已完成,请付费获取数据,我不得不爆一句粗口:

那么王总的id到底是什么?

打开中文WebOCR一试便知:

原来王总的ID是 Correlation ID:5b5fc892-eeae-4098-b473-6c01567f721f 这个呀!

WebOCR-开源的离线OCR

中文WebOCR,是给予开源项目Tr构建。 在其基础上提供了http调用的接口,便于我们在其他的项目中调用。 并且提供了易于使用的web页面,便于调试或日常使用。

WebOCR特性

  • 中文识别
    快速高识别率

  • 文字检测
    支持一定角度的旋转

  • 并发请求
    由于模型本身不支持并发,但通过tornado多进程的方式,能支持一定数量的并发请求。具体并发数取决于机器的配置。

安装说明

服务器部署

  1. 安装python3.7
    推荐使用miniconda

  2. 安装依赖包

shell
pip install -r requirements.txt
  1. 运行
    项目默认运行在3008端口,默认不开启gpu:
shell
python backend/main.py [--port=3008][--open_gpu=0]
# --port 指定运行时端口号 默认是3008  
# --open_gpu 是否开启gpu 默认是0(不开启),可设置为1(开启)

看到以下输出则代表安装成功:

shell
tr 2.3.0 https://github.com/myhub/tr
Server is running: http://192.168.31.95:3008
Now version is: cpu

Docker部署

使用 Dockerfile 构建 或者直接 Pull镜像

shell
# dockerfile 构建
docker build -t gitocr:latest .

# 运行镜像
docker run -itd --rm -p 3008:3008 --name gitocr gitocr:latest
shell
# 从 dockerhub pull
docker pull naluspot/gitocr:latest

# 运行镜像
docker run -itd -p 3008:3008 --name gitocr naluspot/gitocr:latest

这里把容器的3008端口映射到了物理机的3008上,但如果你不喜欢映射,去掉run后面的-p 3008:3008 也可以使用docker的IP加3008来访问

接口文档

接口文档的内容放在了本项目的wiki里:
接口文档

接口调用示例

  • Python 使用File上传文件
python
import requests
url = 'https://www.majun.fun:3008/api/tr-run/'
img1_file = {
    'file': open('img1.png', 'rb')
}
res = requests.post(url=url, data={'compress': 0}, files=img1_file)
  • Python 使用Base64
python
import requests
import base64
def img_to_base64(img_path):
    with open(img_path, 'rb')as read:
        b64 = base64.b64encode(read.read())
    return b64
    
url = 'https://www.majun.fun:3008/api/tr-run/'
img_b64 = img_to_base64('./img1.png')
res = requests.post(url=url, data={'img': img_b64})
  • Postman演示:

其他效果展示

后记

下一站:

Express从0到1
通过GitHub Actions发布Docker镜像