chineseocr_lite README

The project's README from github.com/DayBreak-u/chineseocr_lite. As one markdown file: README.md.

ChineseOCR Lite

CLI · Web Demo · Models · Multi-platform Demo

轻量级中文 OCR 项目,当前分支以 ONNX Runtime 推理为主,包含 Web 服务、Python 推理代码,以及 C++、JVM、Android、.NET 等多端 Demo。

功能

环境

推荐环境:

安装依赖:

pip install -r requirements.txt

启动 Web 服务

cd chineseocr_lite
python backend/main.py

服务默认监听 8089 端口。启动后终端会输出类似:

server is running: 192.168.x.x:8089

在浏览器打开该地址即可使用 Web OCR 页面。

CLI 使用

当前项目也可以作为命令行 OCR 工具使用,适合被 agent、脚本或批处理任务调用。

本地开发安装:

pip install -e .

识别单张图片并输出 JSON:

chineseocr test_imgs/res.jpg

写入 JSON 文件:

chineseocr test_imgs/res.jpg --output result.json

同时输出带检测框的图片:

chineseocr test_imgs/res.jpg --output result.json --draw result.jpg

调整检测前的短边尺寸:

chineseocr test_imgs/res.jpg --compress 960

CLI 输出为稳定 JSON,便于 agent 解析:

{
  "text": "识别出的全文",
  "blocks": [
    {
      "text": "单个文本块",
      "score": 0.93,
      "box": [[12, 30], [210, 31], [209, 60], [11, 59]]
    }
  ],
  "elapsed": 1.24
}

也可以用 Python 模块方式运行:

python -m chineseocr_lite test_imgs/res.jpg

模型文件

当前仓库包含基础推理模型:

目录 文件 用途
models/ dbnet.onnx 文本检测
models/ crnn_lite_lstm.onnx 文本识别
models/ angle_net.onnx 文字方向分类
models_ncnn/ *.bin, *.param NCNN Demo 使用的模型

作为 Python CLI 包安装时,models/*.onnx 会随包一起安装,CLI 开箱即可使用。models_ncnn/ 和各端 Demo 不会作为 CLI 必需资源。

不要把训练权重、Python wheel、大型第三方库或构建产物直接提交到 Git。推荐放到 GitHub Releases、对象存储或 Git LFS。

项目结构

.
├── backend/             Web 服务与接口
├── models/              ONNX 模型
├── models_ncnn/         NCNN 模型
├── dbnet/               文本检测相关代码
├── crnn/                文本识别相关代码
├── angnet/              方向分类相关代码
├── cpp_projects/        C++ Demo
├── jvm_projects/        JVM Demo
├── android_projects/    Android Demo
├── dotnet_projects/     .NET Demo
├── test_imgs/           示例图片与效果图
├── config.py            模型与推理配置
├── model.py             OCR 推理入口
└── utils.py             通用工具函数

多端 Demo

以下 Demo 均为参考 Python 版本翻译或封装而来,彼此相互独立。

C++ Demo

目录:cpp_projects

JVM Demo

目录:jvm_projects

Android Demo

目录:android_projects

如果不想自行整合依赖库,完整源码工程可到 QQ 群共享中下载。

.NET Demo

目录:dotnet_projects

字符检测 OCR Demo

第三方项目:fanqie03/char-detection

根据本项目和 CRNN 原理推导每个字符的位置,并支持将字符组合成单词。

TNN 第三方 Demo

第三方项目:Tencent/TNN OCR 示例

基于本项目实现的轻量级中文 OCR Demo,支持 iOS 和 Android,使用 TNN 的 ARM CPU、OpenCL、Metal 后端加速模型计算。

效果展示

Web 识别

Web OCR result 1

Web OCR result 2

Android 识别

Android IMEI OCR

Android ID card OCR

Android plate OCR

.NET 识别

.NET OCR

字符检测 OCR

Character detection OCR

TNN 第三方 Demo

TNN camera OCR

TNN poster OCR 1

TNN poster OCR 2

chineseocr_lite (DayBreak-u/chineseocr_lite)

Searching Database…

这是干什么的?一个超轻量的中文 OCR 文字识别引擎:能找出并识别图片里的文字,也支持竖排文字。检测、识别和方向分类由三个很小的模型完成,总共只有 4.7MB,完全在 CPU 上运行。
那我装下来的到底是个什么——Python 工具、网页应用,还是手机 SDK?主分支是 Python 的:包含一个命令行工具,外加一个带浏览器页面的 Tornado 网页服务。仓库里还附带 C++、JVM(Java/Kotlin)、Android 和 .NET 的独立参考示例。
怎么把它跑起来?把它作为 Python 包安装就行——.onnx 模型已经自带,命令行工具装好开箱即用。也可以启动 Tornado 网页服务,然后在浏览器里打开它的地址;默认监听 8089 端口。
我的电脑得配什么才能跑——需要显卡吗,还是普通笔记本就行?需要 Python 3.6,支持 Windows、Linux 或 macOS。主分支在 CPU 上推理,所以不用装 CUDA,也不用配显卡;只有 NCNN 示例的变体才提供 GPU 版本。
它是不是只能识别中文?它就是为中文文字设计的——README 里没有提到支持其他语言。另外,C++、JVM、Android 和 .NET 的示例都是从 Python 版本翻译过来的参考移植,各自独立维护,并不是打磨成熟的产品。
能在我的手机上跑吗?Android 有官方示例:ONNX Runtime、NCNN(CPU 和 GPU)和 MNN。iOS 没有官方示例——第三方的 TNN 示例通过 ARM CPU、OpenCL 或 Metal 后端增加了 iOS 支持。
如果我喂给它图片,所有东西都会留在我的电脑上吗?是的——推理完全在你电脑的 CPU 上用自带模型完成,不会涉及任何外部服务。
它能处理竖排的中文文字吗,比如传统排版里的竖列?可以——项目自己的介绍里就把竖排文字识别列为核心特性,同时还强调了总共只有 4.7MB 的超小模型体积。
我想要 Android 或 C++ 的示例,又不想自己折腾原生依赖——可以吗?可以——README 说,如果不想自己集成 ONNX Runtime、NCNN 或 MNN,可以在一个 QQ 群的共享文件里下载完整的项目源码。
它能告诉我每个单独文字的位置吗?有一个第三方项目 fanqie03/char-detection,基于这个仓库和 CRNN 原理开发,可以推算出每个文字的位置,并把文字组合成词语。
Creator
DayBreak-u
Size
241.4 MB
Stars
12.3K
Updated
CommitMay 18
Age
6y
Commits · 90 Days