资讯动态

PaddleOCR Android 文字识别实战指南:4 步在手机上跑通 OCR Demo

发布时间:2026/8/29 16:20:28 来源:尧图企业网站定制
PaddleOCR Android 文字识别实战指南4 步在手机上跑通 OCR Demo【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR跟着本文做完你会在一部 Android 手机上装好一个能识别图片文字的 PaddleOCR Demo选一张图界面返回每一行文字、置信度、坐标框以及检测和识别各自的耗时。PaddleOCR 是百度开源的轻量 OCR 工具包覆盖 100 语言仓库里同时提供了可直接运行的 Android 端侧示例。本文带你走通仓库中最新的deploy/ppocr-android示例PP-OCRv6 模型 ONNX Runtime 推理克隆 → 放模型 → 编译安装 → 验证结果全程不需要自己写模型代码。一、两条 Android 路线先选对再动手仓库里有两套 Android 示例先花 30 秒确认该走哪条路后面 4 步都以ppocr-android为准维度deploy/android_demo/经典 Demodeploy/ppocr-android/本文采用推理引擎Paddle LiteONNX Runtime模型PP-OCRv3 系列.nb 格式PP-OCRv6 / PP-OCRv5 系列ONNX 格式架构单模块 AppDemo 即全部SDK 与 Demo 分离ppocr-sdk可独立集成到第三方应用UI传统 ViewJetpack Compose MVVMminSdk2126Android 8.0性能观测状态文本分阶段耗时统计 自带 benchmark 脚本适合谁想快速看一眼最简 Demo想拿一套可持续维护、可集成进自己 App 的能力选择理由只有一条你要的是能集成进自己应用的文字识别能力而不是一个演示壳。SDK 分离的架构、更新的模型和明确的计时数据都指向ppocr-android。二、最小可运行配置4 步跑通第 1 步 确认环境依赖要求Android StudioLadybug2024.2或更高JDK17Kotlin2.1.0项目已锁定版本导入即生效手机系统Android 8.0API 26及以上开启 USB 调试ONNX Runtime / OpenCV1.21.1 / 4.5.3项目已声明无需手动加第 2 步 获取代码git clone https://gitcode.com/GitHub_Trending/pa/PaddleOCR cd PaddleOCR/deploy/ppocr-android第 3 步 放置模型文件按 官方文档 给出的地址下载PP-OCRv6_small的检测、识别两个 ONNX 模型包解压后按下面结构放入ppocr-sdk/src/main/assets/models/models/ ├── det/ │ └── inference.onnx # 文本检测模型 └── rec/ ├── inference.onnx # 文本识别模型 └── inference.yml # 识别模型的配套配置缺一不可文件名必须严格是inference.onnx/inference.ymlSDK 按固定路径加载。第 4 步 编译、安装、出结果./gradlew :app:installDebug # 编译并安装到已连接的手机也可在 Android Studio 里直接 Run打开应用等模型加载完成点 Select from Gallery 选一张文档图文字清晰、背景干净的图片效果最好即可看到识别文本、置信度、坐标和分阶段耗时三、跑通验证3 个信号、实测耗时与踩坑速查跑通的 3 个信号✅ 界面列出了文本行每行带文字内容和置信度分数✅ 结果显示检测detection与识别recognition各自的耗时统计✅ 退出再进入 App 能正常二次识别无闪退。三条都满足说明检测、识别两个模型在端侧都真正跑起来了。端到端流程实测耗时参考中端设备以下是项目 benchmark 脚本./run_benchmark.sh 10 3在文档中给出的输出示例设备为 Android 9 中端机型测试图含 5 行文本阶段平均耗时说明检测含预处理/推理/后处理348.7 ms其中模型推理约 311 ms识别含预处理/推理/后处理66.2 ms其中模型推理约 60.6 ms检测 识别全流程420.4 ms5 行文本整体想在自己的设备上拿到同口径数据直接在deploy/ppocr-android下连上手机执行./run_benchmark.sh 10 3即可。常用调优参数3 个就够参数默认值怎么调EngineConfig(numThreads)-按手机核心数设置低端机 2~4 线程通常最优detBoxThresh0.6f漏检多→调低如 0.5误检多→调高recScoreThresh0.0f想过滤低置信度行→设为 0.5~0.7踩坑速查表现象常见原因解法Gradle 编译失败Android SDK Platform / Build Tools 版本不全按提示打开 SDK Manager 补装缺失组件识别结果为空模型没放对位置det/、rec/下缺inference.onnx或rec/下缺inference.yml对照第 3 步目录结构逐一核对文件名调用即报错或崩溃未先初始化 OpenCV或在非协程环境调用了create()/recognize()调用前执行OpenCVUtils.init(context)两者都是 suspend 函数需在协程中调用长时间使用内存持续增长模型实例未释放页面退出时调用ocr.release()打包后混淆崩溃未保留混淆规则参考ppocr-sdk/proguard-rules.pro配置四、接入你自己的 App 与 3 个扩展方向两行接入 SDK// settings.gradle.kts include(:ppocr-sdk) // App 模块 build.gradle.kts 的 dependencies 中 implementation(project(:ppocr-sdk))不想维护源码时执行./gradlew :ppocr-sdk:assembleRelease生成 AAR改为implementation(files(libs/ppocr-sdk-release.aar))并手动补上 ONNX Runtime、OpenCV、协程三个依赖即可。最小调用片段val ocr PaddleOCR.create(context) // 协程中创建默认配置即可 val result ocr.recognize(bitmap) // 返回文本、坐标、置信度和耗时 result.results.forEach { println(文本: ${it.text}, 置信度: ${it.confidence}) } ocr.release() // 不再使用时释放避免内存滞留跑通之后还有 3 条路换更轻的模型把models/下的 ONNX 换成 PP-OCRv6_tiny在低端机上再压一档耗时相机实时识别在相机预览回调里做节流比如每 500ms 一帧复用recognize()即可无需改动 SDK一套模型多端复用同一份 ONNX 模型仓库里的 iOS Demo 和服务端推理可以共用结果口径一致。模型到手机的链路到这里已经全部打通。下一步只做一件事按第二节的第 2~4 步把 Demo 装到手机里先拿到一次真实识别结果再谈接入你自己的 App。【免费下载链接】PaddleOCRTurn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between images/PDFs and LLMs. Supports 100 languages.项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价