
IdCardOCR
离线秒扫身份证正反面,直接输出结构化信息
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-10-27 · 当前星标 ★ 1134
使用教程
⚠ 本教程由 AI 依据该项目 README 整理;原始文档不完整,部分步骤为通用流程推断,实际安装请以项目官方文档为准。
⚠ 该项目 README 未提供完整安装说明,以下步骤为通用流程,请以官方文档为准。
环境要求
- Android 开发环境(Android Studio + JDK),可编译运行仓库中的 Java 工程
- 一台带摄像头的 Android 设备或模拟器,用于调用内置扫描界面
- 识别过程离线运行,不需要网络权限
安装与启动步骤
-
1获取项目源码
将仓库克隆到本地,作为 Android 工程用 Android Studio 打开;README 未给出 Maven/Gradle 依赖坐标,需以仓库实际模块配置为准。
git clone https://github.com/XieZhiFa/IdCardOCR.git -
2初始化识别引擎
在 Application 中调用 initOCR 完成初始化,传入 Context,保证扫描前引擎已就绪。
OcrDecodeFactory.initOCR(context); -
3启动扫描界面
用 Builder 设置请求码、证件类型与结果广播,再调用 startOcrActivity 打开内置扫描界面。
OcrDecodeFactory.newBuilder(context) .requestCode(REQUEST_CODE) .ocrType(binding.type.getSelectedItemPosition()) //0身份证, 1驾驶证, 2护照 .broadcastAction(broadcastAction) .startOcrActivity(); -
4接收识别结果
在 onActivityResult 中按 requestCode 与 resultCode 判断,从 Intent 取出 OCRResult 字符串。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == REQUEST_CODE && resultCode == RESULT_OK){ String result = data.getStringExtra("OCRResult"); } } -
5解析结构化字段
把 OCRResult 当作 JSON 解析,按 type、name、sex、folk、birt、num、addr、issue 等键取值展示或入库。
JSONObject jo = new JSONObject(result); String name = (String) jo.opt("name"); String num = (String) jo.opt("num"); String addr = (String) jo.opt("addr");
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
requestCode | 是 | 启动扫描时的请求码,用于在 onActivityResult 中区分回调来源 | REQUEST_CODE |
ocrType | 是 | 识别证件类型:0 身份证、1 驾驶证、2 护照 | 0 |
broadcastAction | 否 | 扫描结果发送的广播 action,用于广播方式接收结果 | com.example.OCR_RESULT |
OCRResult | 是 | Intent 中携带识别结果的键名,内容为 JSON 字符串 | JSONResult |
如何确认成功
调用内置扫描界面扫描一张身份证,在 onActivityResult 中能取到 OCRResult 并解析出姓名、号码、住址等字段即成功。
常见问题
Q:识别需要联网吗?
A:不需要。README 说明为离线识别,无需网络即可提取身份证正反面信息。
Q:支持哪些证件类型?
A:通过 ocrType 选择:0 身份证、1 驾驶证、2 护照,默认场景以身份证为主。
Q:识别结果怎么取?
A:onActivityResult 回调中 data.getStringExtra("OCRResult") 得到 JSON 字符串,再按字段名解析。
Q:如何作为依赖引入已有工程?
A:README 未给出依赖坐标,需参考仓库工程中的模块配置自行拷贝源码或模块引入。
注意事项
- 结果字段名以 README 示例为准(type、name、sex、folk、birt、num、addr、issue 等),解析时注意类型判断
- README 只提供调用示例,未给出 Gradle/Maven 坐标与权限声明,集成时需自行核对工程配置
- 项目为 Android/Java 实现,需在 Android 应用中使用,不是独立可执行程序
核心亮点
- 纯离线识别,证件图像不出本地,隐私风险低
- 正反面字段一次提取,输出姓名、身份证号、住址、有效期等结构化结果
- Java 实现,便于嵌入 Java 后端或桌面系统,集成成本低
不足之处
- 仅覆盖身份证单一证件类型,缺少护照、驾驶证等扩展
- 识别准确率与图像质量强相关,复杂光照或倾斜场景需自行预处理
- 文档与社区活跃度待观察
适用场景
- 酒店、园区访客登记时快速录入身份证信息
- 金融或政务类应用的开户实名信息采集
- 企业内部身份核验系统的本地化 OCR 组件
替代项目
PaddleOCR、EasyOCR、tesseract-ocr
同类项目推荐
scanbot-sdk-example-android
开源
几行代码给安卓 App 加上文档扫描与 OCR 识别
Easy-to-use Android document scanner and data extraction library for native Android ···
ID-Card-Passport-Recognition-And···
开源
拍证件自动识别真伪,Android 端一站式 eKYC 核验
ID Card Recognition, ID Document Recognition, Passport Recognition, Driver License R···
PGS
开源
在Processing里轻松搞定复杂几何处理,让创意不卡壳。
Processing Geometry Suite
MIVisionX
开源
在 AMD 硬件上跑视觉推理,用 OpenVX 图加速
AMD MIVisionX is a computer vision toolkit built around a highly optimized, conforma···
Deep-Exemplar-based-Video-Colori···
开源
给老视频一键上色,参考图决定风格
The source code of CVPR 2019 paper "Deep Exemplar-based Video Colorization".
scanbot-sdk-example-flutter
开源
Flutter 里几行代码接入文档扫描与 MRZ 识别
Easy-to-use Flutter document scanner and data extraction plugin
让多模态大模型精准定位遥感图像中的每个目标像素
GeoPixel: A Pixel Grounding Large Multimodal Model for Remote Sensing is specificall···
gen-cv
开源
用自然语言搞定视觉任务,快速搭建生成式视觉应用
Vision AI Solution Accelerator
AdaRefSR
开源
一张参考图,单步扩散,超分又快又真
AdaRefSR is a novel reference-based one-step diffusion super-resolution framework. P···