Repository navigation
Releases: lxw112190/lw.PPOCR.OpenCVDNN
Release list
v1.1.0 — PDF OCR & JSON CORS / PDF OCR 与 JSON 跨域配置
v1.1.0
本版本新增 PDF OCR 与 JSON 配置 CORS 支持,保持 C ABI v1、HTTP API v1 及配置 Schema v1 兼容。
主要更新
-
新增
/api/pdf/ocrPDF OCR 接口,支持application/pdf二进制上传。 -
支持 PDF 文字层提取、扫描页 OCR,以及
auto、text、ocr、hybrid模式。 -
新增 JSON CORS 配置:
{ "cors": { "enabled": true, "allowed_origins": [ "https://your-site.example", "http://localhost:5173" ] } }
v1.0.0 — lw.PPOCR.OpenCVDNN 首个正式版 / Stable Cross-Platform OpenCV DNN OCR Runtime
v1.0.0 正式版
v1.0.0 是 lw.PPOCR.OpenCVDNN 的首个正式稳定版本。
项目仅使用 OpenCV DNN 5.0.0 进行 CPU 推理,提供精简、跨平台的 PP-OCR Runtime、稳定 C ABI、HTTP 服务、浏览器测试页面,以及 C、C#、Python 调用示例。
项目地址:https://github.com/lxw112190/lw.PPOCR.OpenCVDNN
主要功能
- 完整 OCR:文字检测、可选方向分类、文字识别
- 仅识别接口:支持客户传入已经裁剪好的文字区域
- 单张与批量文字识别
- 稳定 C ABI,方便 C#、Python 及其他语言调用
- HTTP API 支持:
- 图片二进制直传
- JSON/Base64
- 完整 OCR
- 单张及批量仅识别
- 浏览器体验页面:
- 在原图绘制文字区域
- 显示识别文本与置信度
- 显示检测、分类、识别及总耗时
- 可选
X-API-Key认证 - spdlog 运行日志与访问日志
- Windows Service 管理脚本
- Linux systemd 安装、启动、停止、重启和卸载脚本
- Linux AMD64 Docker 与 Docker Compose 部署
正式冻结的 v1 契约
从 v1.0.0 开始,以下公共契约正式冻结:
- C ABI v1
- HTTP API v1
- HTTP 服务配置 Schema v1
- JSONL 访问日志 Schema v1
- 模型清单 Schema v1
- C ABI 导出符号白名单
- 模型与字典 SHA-256 校验规则
整个 1.x 系列将保持向后兼容。
删除或重命名字段、修改字段类型或语义、破坏 ABI 等不兼容变更,必须进入新的主版本或单独版本化的 v2 契约。
生产环境保护
本版本提供以下生产部署保护:
- HTTP 请求队列和 OCR 引擎等待队列均设置硬上限
- 引擎等待队列已满时返回:
- HTTP
429 error_code: queue_full
- HTTP
- 等待 OCR 引擎超时时返回:
- HTTP
503 error_code: engine_wait_timeout
- HTTP
- 批量请求限制:
- 最大图片数量
- 累计像素数量
- 累计解码内存
- 批量识别分块处理,避免一次性保存过多解码图片
- 异常输入处理后服务仍可继续正常 OCR
- API Key、图片内容、Base64 和 OCR 文本默认不会写入日志
- runtime/access 日志分离
- 支持 JSONL 和人类可读 Text 访问日志
- 日志包含请求 ID、响应状态、图片尺寸、结果数量与阶段耗时
- 支持日志轮转、可信代理和请求开始 breadcrumb
发布附件
请根据操作系统和架构下载对应附件:
Windows x64
lw.PPOCR.OpenCVDNN-v1.0.0-windows-x64.ziplw.PPOCR.OpenCVDNN-v1.0.0-windows-x64.zip.sha256
适用于受支持的 Windows 10/11 x64。
Linux x64
lw.PPOCR.OpenCVDNN-v1.0.0-linux-x64.tar.gzlw.PPOCR.OpenCVDNN-v1.0.0-linux-x64.tar.gz.sha256
构建基线:
- Ubuntu 20.04
- x86-64
- glibc 2.31
Linux ARM64 / 统信 UOS 20
lw.PPOCR.OpenCVDNN-v1.0.0-linux-arm64-uos20.tar.gzlw.PPOCR.OpenCVDNN-v1.0.0-linux-arm64-uos20.tar.gz.sha256
构建基线:
- AArch64 / ARMv8-A
- Debian 10
- glibc 2.28
- GCC 8.3
该版本已经在统信 UOS 20 ARM64 实体机验证。
macOS ARM64
lw.PPOCR.OpenCVDNN-v1.0.0-macos-arm64.tar.gzlw.PPOCR.OpenCVDNN-v1.0.0-macos-arm64.tar.gz.sha256
适用于 Apple Silicon,CI 部署目标为 macOS 12.0 及以上。
每个压缩包均包含:
- OCR Runtime
- OpenCV 5.0.0 运行库
- PP-OCRv6 Tiny Chinese 模型
- HTTP 服务
- 浏览器测试页面
- C、C#、Python 示例
- 配置文件与 Schema
- 服务管理脚本
- 依赖锁
- CycloneDX SBOM
- LICENSE 与第三方许可证
请同时下载对应 .sha256 文件并校验附件完整性。
Linux/macOS:
sha256sum -c <附件名称>.sha256Windows PowerShell:
Get-FileHash <附件名称> -Algorithm SHA256Docker
Docker 不单独提供 Release 压缩附件,正式镜像发布到 GitHub Container Registry。
直接运行:
docker run -d \
--name lw-ppocr \
--restart unless-stopped \
-p 8787:8787 \
-v lw-ppocr-logs:/data/logs \
ghcr.io/lxw112190/lw.ppocr.opencvdnn:1.0.0同时提供以下镜像标签:
1.0.01.0latest
Docker Compose 文件已经包含在项目仓库中:
cp .env.example .env
docker compose up -d
docker compose ps在 .env 中设置 PPOCR_API_KEY 可以启用 API Key 认证。
快速启动
Windows
解压后运行:
.\lw-ppocr-http-service.exeLinux
chmod +x run-http-service.sh
./run-http-service.shmacOS Apple Silicon
chmod +x run-http-service.sh
./run-http-service.sh服务启动后访问:
http://127.0.0.1:8787/
健康检查:
GET http://127.0.0.1:8787/health
HTTP API 示例
推荐使用二进制图片接口,避免 Base64 大约 33% 的体积膨胀。
完整 OCR:
curl http://127.0.0.1:8787/api/ocr \
-H "Content-Type: image/jpeg" \
--data-binary @image.jpg仅识别已经裁剪好的文字行:
curl http://127.0.0.1:8787/api/recognize \
-H "Content-Type: image/png" \
--data-binary @text-line.png启用 API Key 后:
curl http://127.0.0.1:8787/api/ocr \
-H "X-API-Key: your-api-key" \
-H "Content-Type: image/jpeg" \
--data-binary @image.jpg验证情况
本版本发布前已完成:
- 全部 GitHub Actions CI
- Windows x64 构建、打包和真实 OCR
- Linux x64 构建、打包和真实 OCR
- Linux ARM64 构建、打包和真实 OCR
- macOS ARM64 构建、打包和真实 OCR
- Docker 非 root、Compose、健康检查和 API Key 测试
- OpenCV 5.0.0 版本与依赖检查
- 模型和字典 SHA-256 校验
- C ABI 导出符号检查
- 黄金正确性回归
- JSON/Base64 与二进制 HTTP 接口测试
- 单张与批量仅识别测试
- API Key 正确、缺失和错误场景
- 配置 Schema 与未知字段拒绝测试
- 43 组异常输入及错误后恢复测试
429 queue_full与503 engine_wait_timeout测试- ASan/UBSan
- 多尺寸图片并发测试
- RSS 内存增长检查
- Windows 本机 1000 次长时间稳定性测试
- CI 定时 5000 次稳定性测试能力
- 统信 UOS 20 ARM64 实体机验证
- 发布包解压后的真实图片 OCR 验证
性能参考
Windows 本机测试环境:
- AMD Ryzen 7 7735H
- 8 核 16 线程
- 16 GB 内存
- Windows 10 22H2
- OpenCV DNN 5.0.0 CPU
- HTTP keep-alive 与二进制图片请求
部分测试结果:
| 场景 | 引擎数/并发 | 吞吐 | 客户端 P95 | 热身后 RSS |
|---|---|---|---|---|
| 完整 OCR | 1/1 | 6.17 req/s | 177.97 ms | 约 151 MB |
| 完整 OCR | 2/2 | 6.98 req/s | 336.50 ms | 约 284 MB |
| 仅识别 | 1/1 | 126.14 req/s | 9.39 ms | 约 154 MB |
| 仅识别 | 2/2 | 172.69 req/s | 13.68 ms | 约 287 MB |
| 仅识别 | 4/4 | 199.80 req/s | 24.32 ms | 约 551 MB |
1000 次多尺寸、并发 4 稳定性测试全部成功,RSS 净增长约 2.32 MB,异常输入后正常 OCR 可以恢复。
性能与图片尺寸、文字区域数量、CPU、内存、并发数和日志配置有关,请在实际部署机器上压测后调整 engine_instances。
完整 OCR 建议从以下配置开始:
{
"engine_instances": 1,
"worker_threads": 4,
"max_queued_requests": 32,
"engine_wait_timeout_ms": 5000
}已经裁剪好的文字行识别可以从 2 个引擎开始评估。
从 RC.3 升级
请使用完整的 v1.0.0 发布包升级,不建议只替换 EXE、DLL 或 SO。
升级步骤:
- 停止现有服务
- 备份
http-service.json和需要保留的日志 - 将 v1.0.0 解压到新目录
- 迁移监听地址、端口、API Key、队列限制和日志路径等本地配置
- 重新安装或启动服务
- 验证
/health - 使用真实图片执行完整 OCR 和仅识别测试
- 确认稳定后再删除旧 RC.3 目录
回滚验证完成前请保留原 RC.3 目录。
已知限制
- 仅支持 OpenCV 5,不支持 OpenCV 4.x
- 当前正式包仅提供 CPU 推理
- Linux 包不包含 glibc 和 ELF 加载器
- Linux 目标机 glibc 不能低于对应发布包的构建基线
- macOS 包使用 ad-hoc 签名,未经过 Apple 公证
- HTTP 服务本身不提供 TLS
- 公网部署建议使用 Nginx、Caddy 等反向代理提供 HTTPS
- API Key 只提供基础访问控制,不能替代网络隔离、TLS 和完整身份认证系统
- 性能数据仅用于配置参考,不是所有硬件和图片的性能承诺
License 与联系方式
项目代码采用 MIT License。第三方依赖与模型许可证请查看发布包中的:
THIRD-PARTY-NOTICES.mdlicenses/dependencies.lock.jsonsbom/lw.PPOCR.OpenCVDNN.cdx.json
联系方式:
- 作者:天天代码码天天
- QQ:819069052
- QQ Group:C# 人工智能实践
- 群号:758616458
- GitHub:https://github.com/lxw112190/lw.PPOCR.OpenCVDNN
感谢所有参与测试、反馈和部署验证的用户。
English summary
v1.0.0 is the first stable release of lw.PPOCR.OpenCVDNN: a compact, cross-platform PP-OCR runtime powered exclusively by OpenCV DNN 5.0.0 on CPU.
It provides full OCR, recognition-only inference, a stable C ABI, binary and JSON/Base64 HTTP APIs, a browser test page, optional API Key authentication, structured logging, service-management scripts, Docker deployment, and ready-to-run packages for Windows x64, Linux x64, Linux ARM64/UOS 20, and macOS ARM64.
C ABI v1, HTTP API v1, configuration Schema v1, JSONL log Schema v1, and model-manifest Schema v1 are formally frozen and remain backward compatible throughout the 1.x line.
Docker images are published through GHCR:
ghcr.io/lxw112190/lw.ppocr.opencvdnn:1.0.0