lewangdev / PaddleWebOCR

开源的中英文离线 OCR,使用 PaddleOCR 实现,提供了简单的 Web 页面及接口
Apache License 2.0
120 stars 30 forks source link

PaddleWebOCR

开源的中英文离线 OCR,使用 PaddleOCR 实现,提供了简单的 Web 页面及接口。

An opensource offline multi-languages OCR system shipped with RESTful api and web page.

介绍

使用了开源的 PaddleOCR 并内置了多个模型,可以在离线环境下运行,并且相关资料丰富便于自行训练模型。PaddleOCR 本身支持中文简体繁体,英文,韩文等等多种语言,本项目只内置了中英文(简体中文和繁体中文)的模型,如需要识别其它语言,可以参考本项目调整模型。

web页面

特性

安装需求

运行平台

Windows、CentOS 和 MacOS 系统下在安装好依赖之后可以直接运行,目前只构建了 paddlepaddle 的 CPU 版本,不支持 GPU。也过通过构建 Docker 镜像或者直接从 DockerHub 拉去镜像来使用。

最低配置要求

安装说明

服务器部署

  1. 安装好 nodejs 之后进入 webui 目录
cd webui
npm install
npm run build
  1. 安装 python 3.7

  2. 安装依赖包

pip install -r requirements.txt
  1. 运行,项目默认运行在 8080 端口:
uvicorn paddlewebocr.main:app --host 0.0.0.0 --port 8080

#或者

PYTHONPATH="${PYTHONPATH}:." python paddlewebocr/main.py [--port=8080]

Docker 部署

推荐从 DockerHub pull 运行镜像

docker run -d -p 8080:8080 -v ${PWD}/logs:/app/logs --name paddlewebocr lewangdev/paddlewebocr:latest

使用脚本构建本地镜像(因为要编译 GCC,整个构建过程非常漫长)

# Dockerfile 构建
./build-docker-image.sh

# 运行镜像
docker run -d -p 8080:8080 -v ${PWD}/logs:/app/logs --name paddlewebocr paddlewebocr:latest 

接口调用示例

import requests
url = 'http://127.0.0.1:8080/api/ocr'
img1_file = {
    'img_upload': open('img1.png', 'rb')
}
res = requests.post(url=url, data={'compress': 0}, files=img1_file)
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 = 'http://127.0.0.1:8080/api/ocr'
img_b64 = img_to_base64('./img1.png')
res = requests.post(url=url, data={'img_b64': img_b64})

效果展示

英文文档识别

中文文档识别

验证码识别

验证码识别

火车票

火车票

发票

身份证

海报

更新记录

查看更新记录

致谢

本项目参考了 TrWebOCR,由于 TrWebOCR 启动时需要联网并且它使用的 Tr 相关的资料比较少,故而尝试使用 paddlepaddlepaddleocr 来替换 Tr, 从而有了本项目。

License

Apache 2.0