新闻详情

新闻详情

首页 / 资讯中心 / 详情

放弃Python!纯C实现PP-OCR,单HTML开箱即用的离线OCR方案

发布时间:2026/9/27 6:56:24来源:尧图网络
放弃Python!纯C实现PP-OCR,单HTML开箱即用的离线OCR方案
文章目录前言1. 为什么放着 Python 不用非要自讨苦吃2. 纯 C 到底有多纯2.1 整条链路握在自己手里2.2 SIMD从 x86 卷到龙芯3. v0.2.0 最大变化Tiny、Small、Medium 三兄弟集合3.1 为什么不在 API 里加型号枚举4. 三套独立模型包各回各家5. 一个 HTML就是一个完整 OCR6. 不是HTML 能生成而是真跑了 OCR7. 除了 CJava、Android、Node 也全接上了8. Release 本身也做成了测试9. 为什么还叫 Preview10. 谁适合来试试这个项目11. 接下来打算干啥12. 最后说两句P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看 传送门https://blog.csdn.net/HHX_01前言兄弟们最近我干了一件在别人眼里多少有点倒反天罡的事放着 Python PaddleOCR 这种人人都说好的路线不走非要拿纯 C 去硬啃 PP-OCR。先别急着笑听我把话说完。不是我不识好歹实在是在工程现场被教育太多次了客户要的从来不是算法牛不牛而是你这玩意儿到底好不好接。1. 为什么放着 Python 不用非要自讨苦吃现在做 OCR 部署成熟方案一抓一大把Python PaddleOCR方便到像是白送的ONNX Runtime通用性拉满OpenVINO、TensorRT性能顶得一批。但真正落到工程项目里你会碰到另一类更扎心的问题。比如客户给你一台工控机需求就一句话“拷几个 DLL 进去就能跑。”说这话的时候客户眼里闪着光像极了当年发誓要减肥的我。再比如你要把 OCR 部署到一台配置比较克制的 Linux ARM64 设备上或者集成进自己的 C、C#、Java 软件里。这时候你会痛苦地发现真正麻烦的往往不是 OCR 模型本身而是模型身后那一整个运行时生态。Python 环境、动态库、第三方依赖、版本兼容、模型格式、部署目录、安装包体积……一个 OCR 功能能给你带进来一大堆东西。不知道的还以为你在部署一个操作系统。所以做 lw.PPOCR.C 的时候我一开始就立了个 flag它不是一个通用 ONNX Runtime而是一个专门针对 PP-OCR 模型优化的轻量级纯 C Runtime。翻译成人话我主动放弃什么模型都能跑换来了更小、更简单、更容易集成、也更容易控制。2. 纯 C 到底有多纯核心用 C11 开发。跑 PP-OCR 的时候Python、OpenCV、ONNX Runtime、OpenVINO、TensorRT、protobuf —— 全都不需要。这串名字念完嘴都酸了可见以前要带的东西有多少。2.1 整条链路握在自己手里因为 Runtime 足够小整个 OCR 执行链你就能真正说了算PP-OCR ONNX ↓ 模型转换 ↓ LWM ↓ lw.PPOCR.C ↓ DET ↓ CLS ↓ REC ↓ 完整 OCR 结果模型加载、Shape 推导、Workspace 管理、算子实现、SIMD 优化、OCR 后处理全部握在自己手里。2.2 SIMD从 x86 卷到龙芯目前 CPU SIMD 已经覆盖Scalar SSE2 AVX2 AArch64 NEON LoongArch LSX看到没连龙芯的 LoongArch 都安排上了。这已经不是给普通 Windows x64 PC 写的 Demo而是奔着跨平台部署 Runtime 去的。3. v0.2.0 最大变化Tiny、Small、Medium 三兄弟集合以前项目主要围着 PP-OCRv6 Tiny 转。Tiny 的最大优势就一个字小。小到手机、普通桌面软件、边缘设备、浏览器都能塞进去属于哪里需要往哪搬的模范打工人。但实际项目里大家自然会问能不能用 Small能不能跑 Medium于是 v0.2.0-preview.1 干了一件大事让三套模型用同一套 Runtime。PP-OCRv6 Tiny PP-OCRv6 Small PP-OCRv6 Medium3.1 为什么不在 API 里加型号枚举这里有个设计细节我很得意我故意没有在 C API 里加 LW_MODEL_TINY、LW_MODEL_SMALL、LW_MODEL_MEDIUM 这种枚举。LW_MODEL_TINY LW_MODEL_SMALL LW_MODEL_MEDIUM因为在我的设计里Tiny / Small / Medium 是模型包的事不该变成 Runtime ABI 的事。原生程序只需要换模型目录Runtime 根本不需要知道你现在跑的是 Tiny 还是 Medium。这个边界划清楚之后以后再加新模型公共 C API 就不用跟着改来改去。省下来的头发还能多熬两年夜。4. 三套独立模型包各回各家这次 Release 直接给了三套模型包PP-OCRv6 Tiny Runtime Pack PP-OCRv6 Small Runtime Pack PP-OCRv6 Medium Runtime Pack实际发布大小大约为Tiny 7.2 MB Small 32.1 MB Medium 139.6 MB7.2MB 和 139.6MB 站在一起像极了健身房里的我和旁边那个练了八年的哥们。每个模型包都自带模型、字典、manifest 和 SHA256 信息还用了独立命名空间避免解压后互相覆盖。于是原生程序目录可以长这样models/ ├── ppocrv6-tiny/ ├── ppocrv6-small/ └── ppocrv6-medium/选哪个目录就跑哪个模型。比在 Runtime 里堆一堆模型类型判断干净得多。5. 一个 HTML就是一个完整 OCR这个功能我愿称之为本场最佳。一个 HTML 文件里直接打包了 Runtime WASM 模型 OCR 页面。不用启动服务器、不用装 Python、不用 npm install连模型目录都不用单独准备。下载完双击打开就能 OCR。这次不是做一个 HTML 让你在三个模型里挑而是分别给了三个独立文件Tiny HTML Small HTML Medium HTML每个文件本身就是个完整、确定的 OCR 产品。发布大小也很有意思Tiny HTML ≈ 13.7 MB Small HTML ≈ 46.9 MB Medium HTML ≈ 190.3 MB这三个数字基本就是它们的定位Tiny手机和普通使用轻装上阵Small我认为是最值得试的增强版体积还扛得住Medium桌面优先的重量级方案。Medium 虽然也能做成单文件 HTML但我不打算把它吹成移动端首选。190MB 的轻量页面打开的时候估计比我的开机速度还感人。6. 不是HTML 能生成而是真跑了 OCR做 WebAssembly 项目最怕什么最怕编译成功 支持浏览器这种自欺欺人。这次不一样。Tiny、Small、Medium 的浏览器版本都真的通过 Chromium 执行过 OCR。Small 和 Medium 还额外跑了这么一套创建 OCR Runtime ↓ 执行真实 OCR ↓ 校验行数 ↓ 校验完整识别文本 SHA256 ↓ 再次 OCR ↓ destroy ↓ 重新 create ↓ 再次 OCR看到没OCR 完还要校验 SHA256然后再来一遍。不知道的还以为在做期末考试。Standalone HTML 也在浏览器里真正加载图片、执行 OCR、读取结果。而且这些测试最后又在正式 Release Workflow 里重新跑了一遍全部通过。所以这次说Small / Medium 浏览器支持不是理论上应该可以而是已经作为 Release Gate 真刀真枪验过货了。7. 除了 CJava、Android、Node 也全接上了核心坚持纯 C但 Runtime 总得被各种业务程序调用。目前这个 Preview 已经提供了一套相当完整的分发方式Windows x64 原生开发包、Linux x86_64 原生开发包Android ARM64 AAR 和 Demo APKJava/JNIWindows x64、Linux x64、macOS ARM64Node.js 18 / 20 / 22 WASMTiny / Small / Medium 浏览器 SDKTiny / Small / Medium 单文件离线 HTMLTiny / Small / Medium Runtime Model Pack。这矩阵列出来不知道的还以为我在做平台全家桶促销。其中 macOS ARM64 的 Java/JNI 这次也真正跑通了完整链路构建 → 打包 → 校验 → Java 示例编译 → macOS 上实际 OCR → Release一条不少比我当年写毕业设计的流程图还全。8. Release 本身也做成了测试这个变化不太能从页面上直接看出来但我觉得比多加点接口重要多了。以前很多项目的发布流程是编译 ↓ 压缩 ↓ 上传随着平台越来越多这种流程特别容易发错文件。于是 lw.PPOCR.C 把 Release Asset 本身定义成了一个 Contract每一个该发布的文件——Windows Linux Web Java Android Node Runtime Model Pack Checksum——都会进 Release Manifest。正式发布前CI 会检查文件是否缺失 文件名是否正确 版本号是否正确 是否出现多余文件 SHA256 是否正确 checksum 是否覆盖正确全部通过才允许执行 GitHub Release。文件多一个、少一个都过不了。这哪是发布这是机场安检。v0.2.0-preview.1 是第一次完整跑通这条真实发布链。对我来说这意味着项目开始从代码仓库变成可以重复构建和发布的软件产品。9. 为什么还叫 Preview功能挺全了但我还是坚持标 v0.2.0-preview.1而不是直接发 v0.2.0。原因很简单想再观察几个问题。首先是 Small 和 Medium 在真实项目里的价值。尤其是 Medium浏览器单文件已经接近 190MB技术上跑得动不代表每个场景都值得用。我更想看的是Small 是不是已经站在了性能、效果、体积之间的平衡点上其次是不同设备上的实际表现普通办公电脑 低功耗 x86 ARM64 国产平台 浏览器 工控环境这些场景里的真实体验比在 CI 里多加几个测试更有说服力。还有一个硬原因目前公共 C ABI 和 LWM v0.1 格式还没宣布冻结。翻译成人话我现在改接口不算违约。所以 Preview 阶段要是拿去上正式项目建议把 Runtime 和模型当一套一起管理别混着用不同 Release 的二进制、模型和字典。这条限制也写进了发布文档。10. 谁适合来试试这个项目如果你平时用 PaddleOCR又正好属于下面这些场景可以来试试你在做 C/C 工程想尽量少带第三方运行库你需要往 Windows / Linux / ARM64 边缘设备上部署 OCR你在做 C#、Java 桌面软件希望底层 OCR Runtime 足够克制你想把 OCR 直接打进一个离线 HTML你在意安装包大小、部署复杂度和运行时依赖或者你单纯对从模型格式、算子、SIMD 到完整 OCR自己搞一套小型推理 Runtime这件事感兴趣。总有一款适合你就像便利店总有一款速食适合深夜的你。11. 接下来打算干啥v0.2.0-preview.1 发布后我不打算马上塞一堆新功能。先让这一版跑一跑看看真实用户到底更爱Tiny Small Medium哪一个。就像问孩子今晚吃麦当劳还是肯德基答案可能是都想要。再看看大家主要把它用在Windows Linux ARM64 Web Java Android哪种环境。以及有没有 CI 里看不到的兼容性问题。后续比较大的 Runtime 工作我依然惦记着更系统的 Microkernel Architecture、ARM64 进一步优化、新的 SIMD Kernel。但这些不会赶在 v0.2.0 之前强行塞进去。先把这一版打磨稳比啥都强。12. 最后说两句lw.PPOCR.C 最开始其实只是个很朴素的想法PP-OCR 能不能不靠一整套通用推理框架直接做成一个足够小、足够好集成的纯 C Runtime做到现在已经攒出了这么一整套东西模型转换 纯 C Runtime DET / CLS / REC 完整 OCR SIMD 多线程 Windows / Linux ARM64 Java Android Node WASM 单 HTML OCR Tiny / Small / Medium 自动化 Release它当然还远没到万能我也不想让它变成另一个万能 Runtime。它就专注一件事用尽可能简单、透明、可控的方式把 PP-OCR 放进真实工程。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

GR00T-WholeBodyControl运动学规划器详解:如何实时生成奔跑、潜行、跪姿、拳击8种动作风格 2026/9/27 6:56:22

GR00T-WholeBodyControl运动学规划器详解:如何实时生成奔跑、潜行、跪姿、拳击8种动作风格

GR00T-WholeBodyControl运动学规划器详解:如何实时生成奔跑、潜行、跪姿、拳击8种动作风格 【免费下载链接】GR00T-WholeBodyControl Welcome to GR00T Whole-Body Control (WBC)! This is a unified platform for developing and deploying advanced humanoid cont…

阅读更多 →
佛山网站建设公司3lue:5个免费工具搞定丑站痛点 2026/9/27 6:56:16

佛山网站建设公司3lue:5个免费工具搞定丑站痛点

佛山网站建设公司3lue:5个免费工具搞定丑站痛点 还在为模板网站太丑不够用而头疼?别急着掏钱找佛山网站建设公司3lue,先试试这几个 免费工具 。很多甲方朋友一上来就问价格,却忽略了网站上线前的视觉诊断和性能体检。…

阅读更多 →
解决matplotlib绘图中文字符显示问题 2026/9/27 6:56:16

解决matplotlib绘图中文字符显示问题

在使用Python进行数据可视化时,常常会遇到中文字符无法正常显示的问题。默认情况下,Matplotlib等常用可视化库并不支持中文字体,这导致中文字符显示为方框或者引发字体相关的警告,给数据展示和报告生成带来不便。尤其对于数据分析师而言,频繁手动调整字体配置既耗时又易出…

阅读更多 →
RL-赵-(九)-Policy函数拟合算法-Policy Gradient算法01:基本概念【用参数化的函数来拟合π,来取代表格形式的π(表格中每个元素直接保存了某个s-a对的π概率值)】 2026/9/27 6:56:15

RL-赵-(九)-Policy函数拟合算法-Policy Gradient算法01:基本概念【用参数化的函数来拟合π,来取代表格形式的π(表格中每个元素直接保存了某个s-a对的π概率值)】

从本文开始,将从value-based methods转向到policy-based methods,从value function approximation到policy function approximation。 一、Basic idea of policy gradient 到目前,我们的policies都是用tables表示的。 如下是所有state的action probabilities,存储在一个t…

阅读更多 →
用AgentENV训练Terminal-Bench-2:搭建Agent强化学习的沙箱后端 2026/9/27 6:56:01

用AgentENV训练Terminal-Bench-2:搭建Agent强化学习的沙箱后端

用AgentENV训练Terminal-Bench-2:搭建Agent强化学习的沙箱后端 【免费下载链接】AgentENV AgentENV (AENV) is a distributed platform for running agent environments at scale. 项目地址: https://gitcode.com/gh_mirrors/age/AgentENV AgentENV&#xff…

阅读更多 →
别被建站报价忽悠 揭秘免费做调查问卷的网站真底细 2026/9/27 6:55:54

别被建站报价忽悠 揭秘免费做调查问卷的网站真底细

别被建站报价忽悠 揭秘免费做调查问卷的网站真底细 找建站公司怕被坑高价,这是很多老板心里的痛点。市面上那些号称“全网最低”的建站报价单,往往藏着无数的隐形消费。今天咱们不聊虚的,直接拆解一个看似与建站无关,实则能帮你省下一大笔营销成本的场景…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉