Other

项目介绍

ctkqiang/chinese_identity_ocr 是一个托管在 GitHub 上的开源项目,主要使用 Java 编写,采用 Other 许可证,目前获得 19 个 Star、2 次 Fork。

仓库全名
ctkqiang/chinese_identity_ocr
开源许可证
Other
Star 数
19
Fork 数
2

README 摘要

中华人民共和国居民身份证 OCR 识别与图像处理系统 系统演示:身份证识别效果展示 基于 OpenCV 和 Tesseract 的中国居民身份证光学字符识别(OCR)系统。本系统采用先进的计算机视觉技术和深度学习算法, 能够快速准确地识别身份证上的文字信息。通过多级图像预处理和优化的 OCR 引擎,即使在复杂光照条件下也能保持较高的识别 准确率。系统采用 MVC 设计模式,具有良好的可扩展性和维护性,可轻松集成到各类应用场景中。 功能特点 身份证图像预处理 光学字符识别(OCR) 中文文本提取 高精度识别 身份证号码合法性验证 系统要求 Java 17 或更高版本 Maven 3.8+ OpenCV 4.x Tesseract 4.x MacOS/Linux/Windows 完整安装步骤 1. 安装基础依赖 2. 配置环境变量 3. 验证安装 构建与运行 构建项目 运行程序 运行示例 以下是系统运行的实际输出示例…

完整内容见 GitHub 原始 README 或本页 。

常见问题

chinese_identity_ocr 用什么语言开发?

主要使用 Java 编写,采用 Other 许可证,目前有 19 个 Star。

chinese_identity_ocr 可以免费商用吗?

仓库标注的许可证为 Other,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 chinese_identity_ocr 的源码?

可以直接克隆仓库:git clone https://github.com/ctkqiang/chinese_identity_ocr.git,默认分支为 main;安装与运行步骤见仓库 README。

chinese_identity_ocr 最近还在维护吗?

仓库最近一次更新为 2025年3月1日,当前没有未关闭的 Issue;Star 数为 19,可作为社区活跃度的参考。

README

中华人民共和国居民身份证 OCR 识别与图像处理系统

系统演示
系统演示:身份证识别效果展示

基于 OpenCV 和 Tesseract 的中国居民身份证光学字符识别(OCR)系统。本系统采用先进的计算机视觉技术和深度学习算法, 能够快速准确地识别身份证上的文字信息。通过多级图像预处理和优化的 OCR 引擎,即使在复杂光照条件下也能保持较高的识别 准确率。系统采用 MVC 设计模式,具有良好的可扩展性和维护性,可轻松集成到各类应用场景中。

功能特点

  • 身份证图像预处理
  • 光学字符识别(OCR)
  • 中文文本提取
  • 高精度识别
  • 身份证号码合法性验证

系统要求

  • Java 17 或更高版本
  • Maven 3.8+
  • OpenCV 4.x
  • Tesseract 4.x
  • MacOS/Linux/Windows

完整安装步骤

1. 安装基础依赖

# 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装 Java 17
brew install openjdk@17

# 安装 Maven
brew install maven

# 安装 OpenCV
brew install opencv

# 安装 Tesseract 及中文语言包
brew install tesseract
brew install tesseract-lang

2. 配置环境变量

# 配置 Java 环境
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc

# 配置 Tesseract 数据路径
echo 'export TESSDATA_PREFIX="/opt/homebrew/share/tessdata"' >> ~/.zshrc

# 配置 OpenCV 库路径
echo 'export DYLD_LIBRARY_PATH="/opt/homebrew/lib:$DYLD_LIBRARY_PATH"' >> ~/.zshrc

# 使配置生效
source ~/.zshrc

3. 验证安装

# 验证 Java 版本
java -version

# 验证 Maven 版本
mvn -version

# 验证 Tesseract 安装
tesseract --version

# 验证 OpenCV 安装
pkg-config --modversion opencv4

构建与运行

构建项目

# 克隆项目
git clone https://github.com/ctkqiang/chinese_identity_ocr.git
cd chinese_identity_ocr

# 构建项目
mvn clean install

运行程序

mvn exec:java \
  -Dexec.mainClass="xin.ctkqiang.中华人民共和国居民身份证_OCR_识别与图像处理系统" \
  -Djava.library.path="/opt/homebrew/opt/opencv/share/java/opencv4" \
  -Dexec.args="<图像路径>"

运行示例

以下是系统运行的实际输出示例:

💡 成功加载OpenCV库
💡 Tesseract数据路径: /opt/homebrew/share/tessdata
💡 中华人民共和国居民身份证_OCR_识别与图像处理系统启动!
💡 请输入身份证图像路径:
'/Users/ctkqiang/Documents/上饶满星科技有限公司/chinese_identity_ocr/assets/test_images/9333812.png'
💡 创建临时文件/Users/ctkqiang/Documents/上饶满星科技有限公司/chinese_identity_ocr/temp/processed_1740501259703.jpg
💡 清理后的 OCR 结果: [识别结果文本]
💡 OCR识别结果: 911124198108035002
💡 OCR识别结果: 非法
-----

▶ [测试 1]: 直接显示身份证号码解析
💡
▶ [测试 2]: 控制器解析身份证信息
💡
┌───────────────────────────────────────────────┐
│ 身份证信息识别结果 │
├───────────────────────────────────────────────┤
│ 地区信息: 江西省抚州地区南丰县 (362424) │
│ 出生日期: 1976 年 11 月 06 日 │
│ 性别: 男 │
│ 校验码: 8 │
└───────────────────────────────────────────────┘

💡
✓ 测试完成

身份证验证算法

系统采用国家标准 GB11643-1999 规定的身份证验证算法。以下是详细的计算过程:

数学原理

  1. 加权求和 设身份证号码前 17 位依次为 $a_i$,加权因子为 $w_i$,则:

    $S = \sum_{i=1}^{17} a_i \times w_i$

    其中:

    • $a_i$ 为第 i 位的数字值
    • $w_i$ 为第 i 位的加权因子:
    位置 (i) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    因子 (wi) 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
  2. 取模运算 计算校验值 Y:

Y = S \bmod 11
  1. 校验码对应关系 根据 Y 值查表获得校验码 C:

    Y 值 0 1 2 3 4 5 6 7 8 9 10
    校验码 1 0 X 9 8 7 6 5 4 3 2

验证示例

以身份证号 110101199003077734 为例:

  1. 加权求和计算
1×7 + 1×9 + 0×10 + 1×5 + 0×8 + 1×4 + 1×2 + 9×1 +
9×6 + 0×3 + 0×7 + 3×9 + 0×10 + 7×5 + 7×8 + 7×4 + 3×2
= 7 + 9 + 0 + 5 + 0 + 4 + 2 + 9 +
54 + 0 + 0 + 27 + 0 + 35 + 56 + 28 + 6
= 242
  1. 取模运算
242 ÷ 11 = 22 余 0;
Y = 0

  1. 查表获得校验码
Y = 0 对应校验码 '1'
  1. 验证结果 身份证最后一位为 4,与计算得到的校验码 1 不符,因此该身份证号无效。

算法特点

  1. 数学基础
  • 采用模运算确保结果唯一性
  • 加权因子经过特殊设计,提高识别准确率
  • 校验码包含数字和字母,增加防伪性
  1. 错误检测能力
  • 可检测单个数字的录入错误
  • 可检测数字的顺序颠倒错误
  • 可检测多数字同时出错的情况
  1. 实现考虑
  • 运算过程简单,易于编程实现
  • 计算量小,适合实时验证
  • 具有良好的容错性能

算法

中华人民共和国居民身份证 OCR 识别与图像处理系统算法

项目文档

完整的 API 文档可在以下位置查看:

许可证

本项目采用 木兰宽松许可证 (Mulan PSL) 进行许可。
有关详细信息,请参阅 LICENSE 文件。

License: Mulan PSL v2

🌟 开源项目赞助计划

用捐赠助力发展

感谢您使用本项目!您的支持是开源持续发展的核心动力。
每一份捐赠都将直接用于:
✅ 服务器与基础设施维护
✅ 新功能开发与版本迭代
✅ 文档优化与社区建设

点滴支持皆能汇聚成海,让我们共同打造更强大的开源工具!


🌐 全球捐赠通道

国内用户

🔵 支付宝

🟢 微信支付
国际用户

📌 开发者社交图谱

技术交流
社交互动

🙌 感谢您成为开源社区的重要一员!
💬 捐赠后欢迎通过社交平台与我联系,您的名字将出现在项目致谢列表!

评论

暂无评论