[特殊字符] 开源一款基于 PaddleOCR 的纯离线 OCR 识别插件 | 支持身份证、银行卡、驾驶证识别

🚀 开源一款基于 PaddleOCR 的纯离线 OCR 识别插件 | 支持身份证、银行卡、驾驶证识别

不依赖任何云服务,所有识别在本地完成,隐私安全有保障!

前言

在移动应用开发中,OCR 识别是一个常见需求,尤其是证件识别场景:身份证实名认证、银行卡绑定、驾驶证信息录入等。

然而,市面上大多数 OCR 方案都依赖云服务 API,存在以下问题:

  • 💰 成本高 - 按调用次数收费,量大时费用惊人
  • 🌐 需要网络 - 离线场景无法使用
  • 🔓 隐私风险 - 敏感证件数据上传到第三方服务器

为了解决这些痛点,我开发了 lf-OCR —— 一款基于 PaddleOCR 的纯离线 OCR 识别插件,专为 uni-app 多端开发设计。


✨ 核心特性

特性说明
🔒 纯离线所有模型和依赖本地化,无需网络即可使用
🚀 高性能基于 PaddleOCR,识别速度快、准确率高
🎯 中文优化专为中文场景优化,识别效果出色
📱 多平台支持 H5、App (Android/iOS)
🪪 证件识别内置身份证、银行卡、驾驶证解析模板
智能验证自动验证证件有效性(校验码、有效期等)
🔄 自动识别智能判断证件正反面,无需手动指定
🔧 易于扩展支持自定义模型和识别模板

📦 技术架构

lf-OCR ├── 核心引擎 (PaddleOCR + ONNX Runtime + OpenCV.js) ├── 证件解析模板 (身份证/银行卡/驾驶证/通用) ├── 校验工具 (身份证号/银行卡号/手机号等) └── 格式化工具 (日期/金额/手机号等) 

整个插件大小约 35MB,包含:

  • ppocr_det.onnx - 文字检测模型
  • ppocr_rec.onnx - 文字识别模型
  • OpenCV.js - 图像处理
  • ONNX Runtime - 模型推理

🎮 快速上手

安装

在 HBuilder 插件市场搜索 lf-OCR 导入,或手动复制到 uni_modules 目录。

基础使用

import lfOCR from"@/uni_modules/lf-OCR/index.js";// 初始化引擎await lfOCR.init({onProgress:(msg)=> console.log("加载进度:", msg),});// 识别身份证const result =await lfOCR.recognize(imagePath,"idCard");if(result.valid){ console.log("姓名:", result.name); console.log("身份证号:", result.idNumber); console.log("地址:", result.address);}

返回数据示例

身份证正面识别结果:

{"name":"张三","gender":"男","ethnicity":"汉族","birthDate":"1990年01月01日","address":"北京市朝阳区某某街道123号","idNumber":"110101199001011234","valid":true,"side":"front"}

🪪 支持的证件类型

1. 身份证识别

自动判断正反面,提取完整信息:

import{ parseIdCard, validateIdCard }from"@/uni_modules/lf-OCR/index.js";const result =parseIdCard(ocrText);if(result.side ==="front"){// 正面:姓名、性别、民族、出生日期、地址、身份证号const validation =validateIdCard(result.idNumber); console.log("年龄:", validation.info.age);}else{// 背面:签发机关、有效期限 console.log("是否过期:", result.isExpired);}

2. 银行卡识别

支持国内主流银行卡,自动识别银行和卡类型:

import{ parseBankCard }from"@/uni_modules/lf-OCR/index.js";const result =parseBankCard(ocrText); console.log("卡号:", result.cardNumberFormatted);// 6222 0212 3456 7890 123 console.log("银行:", result.bankName);// 中国工商银行 console.log("类型:", result.cardType);// 借记卡

3. 驾驶证识别

支持主页和副页识别:

import{ parseDriverLicense }from"@/uni_modules/lf-OCR/index.js";const result =parseDriverLicense(ocrText); console.log("准驾车型:", result.licenseClass);// C1 console.log("车型描述:", result.licenseClassDesc);// 小型汽车

✅ 内置校验功能

插件不仅能识别文字,还能验证证件有效性

import{ validateIdCard, validateBankCard,}from"@/uni_modules/lf-OCR/index.js";// 身份证校验(含校验码验证)const idResult =validateIdCard("110101199001011234");if(idResult.valid){ console.log("地区:", idResult.info.region); console.log("出生日期:", idResult.info.birthDate); console.log("性别:", idResult.info.gender); console.log("年龄:", idResult.info.age);}// 银行卡校验(Luhn 算法)const bankResult =validateBankCard("6222021234567890123"); console.log("是否有效:", bankResult.valid);

🔧 扩展开发

更换 OCR 模型

支持替换为其他 ONNX 格式模型:

hybrid/html/models/ ├── ppocr_det.onnx # 替换检测模型 ├── ppocr_rec.onnx # 替换识别模型 └── ppocr_keys_v1.txt # 替换字典文件 

新增识别模板

js_sdk/templates/ 目录下创建新模板,实现自定义证件解析:

// js_sdk/templates/passport.jsexportfunctionparsePassport(text, lines =[]){const result ={name:"",passportNumber:"",nationality:"",valid:false,};// 实现字段提取逻辑...return result;}

📱 平台兼容性

平台支持
H5
App (Android)
App (iOS)
微信小程序❌ (不支持 WebAssembly)

🔗 项目地址


📷 页面截图

在这里插入图片描述

🤔 常见问题

Q: 识别准确率如何?

A: 基于 PaddleOCR,中文识别准确率可达 95% 以上。建议使用清晰、光线充足的图片。

Q: 支持哪些证件?

A: 目前内置身份证、银行卡、驾驶证模板,同时支持通用文字识别。后续会持续更新。

Q: 如何添加新证件类型?

A: 在 js_sdk/templates/ 目录下创建新模板文件,参考现有模板实现即可。


📄 开源协议

MIT License - 可免费用于商业项目


🙏 致谢


如果这个项目对你有帮助,欢迎 ⭐️ Star 支持一下!有问题或建议也欢迎提 Issue 讨论。

Read more

开源 AI 网络搜索工具:OpenWebSearch MCP 全新升级,支持多引擎 + 流式响应!

开源 AI 网络搜索工具:OpenWebSearch MCP 全新升级,支持多引擎 + 流式响应!

🚀 开源 AI 联网搜索工具:Open-WebSearch MCP 全新升级,支持多引擎 + 流式响应! 💡「让你的 AI 插件真正能联网」—— 不需要 API Key,搜索结果可控、开箱即用! 大家好,我最近开源了一个 AI 插件开发工具 —— Open-WebSearch MCP。这个项目旨在解决 AI 在实际应用中无法联网或联网费用高昂的问题,特别适合在 Claude、LangChain、RAG 方案中添加“实时搜索”能力。 🧠 项目亮点一览 ✅ 多引擎实时搜索 * 支持 Bing、百度、ZEEKLOG、 DuckDuckGo、Exa、Brave(目前 linux.do 暂不支持) * 支持HTTP代理配置,轻松解决网络访问限制 * 支持HTTP代理配置,轻松解决网络访问限制 * 可配置引擎组合搜索,

By Ne0inhk

Vscode中配置Claude code的git bash链接问题

解决VS Code中Claude Code的Git Bash链接问题 问题描述 在VS Code中使用Claude Code时出现错误提示: Error: Claude Code on Windows requires git-bash (https://git-scm.com/downloads/win). 确定git已经安装成果,且按照官方建议设置环境变量CLAUDE_CODE_GIT_BASH_PATH仍无效。 解决方案 删除特定环境变量 在Windows环境变量的用户变量部分,检查并删除CLAUDE_CODE_GIT_BASH_PATH变量(如果存在)。 将Git CMD添加到PATH 编辑用户变量中的Path,添加Git的cmd文件夹路径: * 用户级安装路径:%USERPROFILE%\AppData\Local\Programs\Git\cmd * 全局安装路径:C:\Program Files\

By Ne0inhk
Git 到底是干啥的?零基础小白听完都懂了并且轻松驾驭它

Git 到底是干啥的?零基础小白听完都懂了并且轻松驾驭它

git,通俗的来说就是一种用来多人文件版本合作的工具,但是对一些非程序员的项目小白或者没有程序基础的但是想要入行做程序员的人来说,完完全全理解起来稍微有点困难。这篇文章不像很多文章一样是枯涩的码字教学。现在,我们就用最通俗易懂的方式,让你从零基础理解他,并且使用他。这种教学方法不是把你当白痴的教学方法,反而是让你快速入门深刻理解它,并记住它的教学方法。因为可能说得比较详细,篇幅较长,还得请你耐心的把他看完。 一、git的作用 1、git的版本控制 文件永远不会只有一个版本,这句话我们似乎用亲身经历证明过。你是否有过以下经历👇 📘论文会有“终稿v1、终稿v2、终稿最终版”、 ✍设计稿会有“改版A、改版B、改版C”、 🧺甚至自己写的文章也会来回改十几遍。 🥚更不用说单独只通过一个本地夹操刀一个大型项目了 突然有一天你觉得你的论文、设计稿、文章、项目某一个节点开始脱离了原本的方向或者发生了一些错误,但是你已经对其进行多处修改了,单独再修改不仅费事废经历,还容易发生遗漏。 你或许信誓旦旦的告诉我,你可以这样做。。。👇 论文_最终v1.docx 论文_

By Ne0inhk
GitHub介绍指南

GitHub介绍指南

作为程序员,GitHub 绝对是日常开发、技术成长、团队协作的核心工具——它不只是“代码仓库”,更是全球1亿+开发者的技术生态枢纽,从个人项目管理到大型团队协作,从开源学习到职场背书,吃透它能大幅提升开发效率、拓宽技术视野,是程序员不可或缺的“刚需装备”。 一、先厘清关键:GitHub ≠ Git(避免踩坑)        很多开发者初期会混淆两者,用两个通俗比喻就能快速区分,核心关系一句话概括:Git 负责“本地记录”,GitHub 负责“云端共享”: * Git:你本地电脑的“代码版本管理工具”(软件),无需联网,核心作用是记录代码每一次修改、管理分支、一键回退版本,相当于你私人的“代码日记本”,解决“改崩代码回不去”“多个最终版文件夹混乱”的痛点。 * GitHub:基于 Git 搭建的在线平台(网站),需联网使用,核心是将本地

By Ne0inhk