当前位置: 首页 > article >正文

身份证OCR识别接口接入实战:Python/Java/PHP/C#四语言代码示例与踩坑指南

#身份证OCR, #OCR接口, #API接入, #Python示例, #Java示例, #PHP示例, #踩坑指南, #石榴智能, #实名认证, #图片识别身份证OCR识别接口接入实战Python/Java/PHP/C#四语言代码示例与踩坑指南作者石榴智能技术团队一、前言身份证OCR识别已经不是什么黑科技了但每次接新接口总有人问为什么我传了图片却返回“参数错误”为什么识别出来的名字是乱码为什么正面反面总是搞反这篇文章不讲虚的直接上代码并把我踩过的5个坑全列出来。我们以【石榴智能身份证OCR API】为例进行演示该接口支持身份证正反面识别、头像裁切、方向矫正、字段矫正等功能并提供Python/Java/PHP/C#等多语言SDK也可以直接HTTP调用。如果你还没注册建议先去免费领取测试额度用自己的真实身份证图片测一测再决定是否接入。二、准备工作注册账号进入控制台获取AppCode也叫API Key。准备一张身份证图片正反面均可建议JPG或PNG格式大小不超过2MB。将图片转为Base64字符串不带data:image前缀或者提供图片URL本示例以Base64方式演示。阅读API文档确认请求地址和参数格式。接口基本信息请求地址POST http(s)://ocr-api.shiliuai.com/api/id_card_ocr/v2请求方法POST请求头Authorization: APPCODE 你的AppCodeContent-Type: application/json请求参数1.请求头参数类型说明Content-Typestringapplication/jsonAuthorizationstringAPPCODE 您的AppCode (注意英文空格)获取2.请求体参数是否必填类型说明image_base64必填其中之一stringbase64编码的图片文件,像素范围[15,8192]小于20Mimage_urlstring图片文件的url, 像素范围[15,8192]小于20Mreturn_rectified_card选填bool是否返回裁剪并矫正的身份证图片默认为Falsecard_margin_ratio选填float裁剪时的边距比例等于边距/长边默认为0card_width选填int裁剪后的证件图片的宽度card_height选填int裁剪后的证件图片的高度如果card_width和card_height都不传或者都传-1那么用原图中证件大小 如果其中一个0, 另一个不传或传-1那么表示该长度按比例缩放得到return_rectified_head选填bool是否返回裁剪并矫正的头像图片默认为False头像图片里头顶和上边会有一些距离( 长宽比是441:358 )head_width选填int裁剪后的头像图片的宽度如果head_width和head_height都不传或者都传-1那么用原图中头像大小如果其中一个0, 另一个不传或传-1那么表示该长度按比例缩放得到head_height选填int裁剪后的头像图片的高度响应示例正面{ code: 200, msg: success, msg_cn: 成功, success: true, image_id: xxxx, request_id: req_xxxx, data: { is_front: true, complete_score: 0.98, is_complete: true, clear_score: 0.92, is_clear: true, name: 张三, sex: 男, ethnicity: 汉, birthDate: 1990年01月01日, address: 北京市朝阳区XXX, idNumber: 110101199001011234 } }参数参数类型说明举例is_frontbool是否正面complete_scorefloat完整度[0, 1]0.8is_completebool是否完整当complete_score1时为TrueTrueunoccluded_scorefloat无遮挡程度[0, 1]is_unoccludedbool是否无遮挡当unoccluded_score0.99时为Trueclear_scorefloat[0, 1]清晰度用文字可识别度计算0.9is_clearbool是否清晰当clear_score0.5时为Truerectified_card_base64string裁剪并矫正的身份证图片, 当return_rectified_cardTrue时有该项rectified_head_base64string裁剪并矫正的头像图片, 当return_rectified_headTrue且是正面时有该项三、踩坑清单Base64编码包含前缀很多开发者直接把data:image/png;base64,xxxxx传进去后台解码失败。一定要只传逗号后面的纯Base64。图片太大超过限制大部分免费额度下限制2MB手机拍的原图经常5-10MB需要先压缩再转Base64。正反面传反如果手动传side参数务必确认图片是正面还是反面。不传side让接口自动检测更可靠但会多花10-20ms。中文乱码响应中的姓名、地址等字段是UTF-8编码接收时请使用UTF-8解码。C#和Java要注意字符串编码设置。头像提取为空当身份证图片中头像区域被遮挡或角度倾斜过大可能无法提取头像。建议开启“矫正”功能部分API支持或者调用侧重新上传。四、代码示例以下四种语言的代码均可以直接复制到你的项目中只需替换AppCode和图片路径。Python 示例# # 免费在线体验https://market.shiliuai.com/tools/ocr/id-card # API文档完整开发文档和代码示例https://market.shiliuai.com/doc/id-card-ocr # 支持免费在线体验 # API文档清晰提供多种接入语言示例如python、js、C#、java、php等以及自动化脚本语言如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等 # # -*- coding: utf-8 -*- import requests import base64 import json # 请求接口 URL https://ocr-api.shiliuai.com/api/id_card_ocr/v2 # 图片转base64 def get_base64(file_path): with open(file_path, rb) as f: data f.read() b64 base64.b64encode(data).decode(utf8) return b64 def demo(appcode, file_path): # 请求头 headers { Authorization: APPCODE %s % appcode, Content-Type: application/json } # 请求体 b64 get_base64(file_path) data {image_base64: b64} # 请求 response requests.post(urlURL, headersheaders, jsondata) content json.loads(response.content) print(content) if __name____main__: appcode 你的APPCODE file_path 本地图片路径 demo(appcode, file_path)PHP 示例// // 免费在线体验https://market.shiliuai.com/tools/ocr/id-card // API文档完整开发文档和代码示例https://market.shiliuai.com/doc/id-card-ocr // 支持免费在线体验 // API文档清晰提供多种接入语言示例如python、js、C#、java、php等以及自动化脚本语言如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等 // // 图片转base64 function get_base64($path){ if($fp fopen($path, rb, 0)) { $binary fread($fp, filesize($path)); fclose($fp); $b64 base64_encode($binary); }else{ $b64; printf(%s 文件不存在, $path); } return $b64; } // 请求接口 $url https://ocr-api.shiliuai.com/api/id_card_ocr/v2; $appcode 你的appcode; $img_path 图片路径; $method POST; // 请求头 $headers array(); array_push($headers, Authorization:APPCODE . $appcode); array_push($headers, Content-Type:application/json); // 请求体 $b64 get_base64($img_path); $data array( image_base64 $b64 ); $post_data json_encode($data); // 请求 $curl curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); $result curl_exec($curl); var_dump($result);C# 示例// // 免费在线体验https://market.shiliuai.com/tools/ocr/id-card // API文档完整开发文档和代码示例https://market.shiliuai.com/doc/id-card-ocr // 支持免费在线体验 // API文档清晰提供多种接入语言示例如python、js、C#、java、php等以及自动化脚本语言如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等 // using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace MyCSharpApp { public class Program { public static string GetBase64(string path) { string b64 ; try { // 读取文件内容 byte[] content File.ReadAllBytes(path); // 转换为Base64 b64 Convert.ToBase64String(content); } catch (Exception e) { Console.WriteLine(e.Message); } return b64; } public static async Task Main(string[] args) { string url https://ocr-api.shiliuai.com/api/id_card_ocr/v2; // 请求接口 string appcode 你的APPCODE; string imgFile 本地图片路径; // 设置请求头 Dictionary headers new Dictionary { { Authorization, APPCODE appcode } }; JObject requestObj new JObject(); requestObj[image_base64] GetBase64(imgFile); string body requestObj.ToString(); try { using (HttpClient client new HttpClient()) { // 设置请求头 foreach (var header in headers) { client.DefaultRequestHeaders.Add(header.Key, header.Value); } // 创建请求内容 StringContent content new StringContent(body, Encoding.UTF8, application/json); // 发送请求并获取响应 HttpResponseMessage response await client.PostAsync(url, content); if (!response.IsSuccessStatusCode) { Console.WriteLine($Http code: {(int)response.StatusCode}); return; } // 读取响应内容 string responseContent await response.Content.ReadAsStringAsync(); JObject resObj JObject.Parse(responseContent); Console.WriteLine(resObj.ToString(Formatting.Indented)); } } catch (Exception e) { Console.WriteLine(e.Message); } } } }支持免费在线体验API文档清晰提供多种接入语言示例如python、js、C#、java、php等以及自动化脚本语言如天诺、懒人精灵、按键精灵、易语言、EasyClick、触动精灵等。API文档完整开发文档和代码示例https://market.shiliuai.com/doc/id-card-ocr五、业务集成建议异步处理对于批量识别如几十张身份证建议使用异步队列避免接口调用阻塞主线程。缓存机制同一张图片短时间内重复识别可以在业务层做缓存如根据图片MD5节省调用量。容错策略识别失败时可以返回人工审核入口或者引导用户重新上传更清晰的图片。合规提醒身份证OCR涉及个人敏感信息请务必遵守《个人信息保护法》建议不要在日志中打印完整的身份证号和姓名。六、延伸阅读如果你对身份证OCR的其他功能感兴趣推荐继续阅读本系列文章《身份证OCR识别总是失败一文教你快速排查》—— 专门解决识别率低的问题《身份证正反面合并识别OCR接口调用》—— 教你一次调用完成正反面合并和识别《身份证OCR识别支持矫正及头像提取》—— 深度解析头像提取和方向矫正参数另外如果你的业务需要识别其他证件如营业执照、发票、医疗票据可以参考《发票OCR识别秒级提取高效财务》七、总结身份证OCR接口的接入并不复杂核心就是把图片转成Base64、正确设置请求头、解析JSON响应。真正的坑往往在于图片预处理压缩、去前缀和编码格式。本文提供的四种语言代码全部经过真实环境测试直接复制修改AppCode和图片路径即可运行。如果你想先在线体验效果可以访问【石榴智能身份证OCR在线工具】免费试用确认满意后再接入API。有任何问题欢迎在评论区留言。#身份证OCR, #OCR接口, #API接入, #Python示例, #Java示例, #PHP示例, #踩坑指南, #石榴智能, #实名认证, #图片识别

相关文章:

身份证OCR识别接口接入实战:Python/Java/PHP/C#四语言代码示例与踩坑指南

#身份证OCR, #OCR接口, #API接入, #Python示例, #Java示例, #PHP示例, #踩坑指南, #石榴智能, #实名认证, #图片识别 身份证OCR识别接口接入实战:Python/Java/PHP/C#四语言代码示例与踩坑指南 作者:石榴智能技术团队 一、前言 身份证OCR识别已经不是什…...

FCEUX终极指南:从怀旧游戏到专业调试的完整NES模拟器教程

FCEUX终极指南:从怀旧游戏到专业调试的完整NES模拟器教程 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux FCEUX是一款功能强大的开源NES模拟器,让你在现代电脑上完美重温经典红白机游戏。无论…...

Python基础语法:访问器@property和修改器@xxx.setter

一、简介 访问器和修改器也是装饰器的一种。 property: 访问器,getter xxx.setter: 修改器,setter 访问器和修改器的根本目的是想将属性私有化,提供getter&setter去访问。 访问器和修改器能够做到访问属性其实在调用getter方法&#xff0…...

AlphaFold 3终极指南:掌握Jackhmmer与HMMER提升蛋白质结构预测精度

AlphaFold 3终极指南:掌握Jackhmmer与HMMER提升蛋白质结构预测精度 【免费下载链接】alphafold3 AlphaFold 3 inference pipeline. 项目地址: https://gitcode.com/gh_mirrors/alp/alphafold3 你是否在蛋白质结构预测项目中遇到MSA生成效率低下的瓶颈&#x…...

Buzz音频转录完全指南:3大核心功能+5个实战场景,快速掌握本地语音转文字技术

Buzz音频转录完全指南:3大核心功能5个实战场景,快速掌握本地语音转文字技术 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Tr…...

别再乱用分支了!Flowable四种网关(排他/并行/包容/事件)实战选型指南

Flowable四大网关实战选型:从混乱到精准的决策艺术当你在设计一个请假审批流程时,是否遇到过这样的困惑:部门经理审批后需要同时通知HR和财务,但某些特殊情况下又需要跳过财务直接归档?这种看似简单的业务需求&#xf…...

DISMTools企业部署:在组织中大规模应用的最佳实践

DISMTools企业部署:在组织中大规模应用的最佳实践 【免费下载链接】DISMTools The connected place for Windows system administration 项目地址: https://gitcode.com/GitHub_Trending/di/DISMTools DISMTools是一款专为Windows系统管理设计的连接平台&…...

除了ulimit -c unlimited:深入理解Linux core dump机制与高级配置指南

深入Linux核心转储:从基础配置到生产环境实战指南当服务器上的关键应用突然崩溃时,系统管理员最需要的就是一份完整的"事故现场记录"。Linux的core dump机制正是为此而生,它能保存程序崩溃时的内存状态、寄存器值和调用堆栈&#x…...

Stitches API完全指南:从基础配置到自定义扩展

Stitches API完全指南:从基础配置到自定义扩展 【免费下载链接】stitches HTML5 Sprite Sheet Generator 项目地址: https://gitcode.com/gh_mirrors/sti/stitches Stitches是一款强大的HTML5 Sprite Sheet Generator,它提供了直观的API接口&…...

Unity UGUI轻量UI框架:200行代码实现零GC界面管理

1. 为什么还要自己手写UI框架?——当UGUI原生方案开始“卡脖子”很多人看到这个标题第一反应是:“都2024年了,还手写UI框架?Asset Store里几十个成熟方案,NGUI、FairyGUI、TextMeshPro配套的UI系统一抓一大把&#xff…...

隧道裂缝剥落病害AI识别系统

我国现有公路隧道超2.5万座,总里程超2.8万公里,其中运营超过15年的老旧隧道占比达35%。据交通运输部2025年统计,年均因隧道结构病害导致的交通中断超1200次,直接经济损失超45亿元。传统检测模式暴露四大核心痛点:检测周…...

Veo 2提示词效能跃迁实战(工业级Prompt链构建全图谱)

更多请点击: https://codechina.net 第一章:Veo 2提示词编写的核心范式演进 Veo 2作为新一代视频生成模型,其提示词(prompt)工程已从早期的“关键词堆叠”转向结构化、语义分层与意图对齐的复合范式。这一演进并非简…...

STM32单片机学习(28) —— STM32的SPI外设

文章目录概述SPI通信的移位机制(以bit为单位)SPI外设框图第一部分:数据通路SPI通信的数据帧格式SPI外设移位机制(以字节为单位)第二部分:主机时钟生成器SPI通信时钟频率与传输速率第三部分:主从…...

DeepSeek代码质量评估实战手册:7步完成从混沌到可度量的质变跃迁

更多请点击: https://kaifayun.com 第一章:DeepSeek代码质量评估的底层逻辑与核心价值 DeepSeek代码质量评估并非简单地统计行数或检测语法错误,而是基于多维语义理解构建的推理系统。其底层逻辑融合了静态分析、符号执行与大语言模型生成式…...

STM32单片机学习(27) —— SPI相关概念

文章目录概述SPI通信的核心特性I2C和SPI的简单对比SPI学习的补充说明SPI硬件电路设计SPI的四条通信线SPI通信的片选线低电平选中不支持广播通信SPI通信的时序结构(重点)SPI通信的比特序通信空闲状态,SPI时钟极性采样时机,SPI时钟相…...

保姆级教程:在CentOS 7上用达梦8搭建DCA练习环境(附ulimit、VNC、ODBC全配置)

达梦8 DCA认证实战:CentOS 7环境搭建与调优全指南 在国产数据库技术快速发展的今天,达梦数据库作为核心产品之一,其DCA认证已成为众多从业者提升竞争力的重要选择。与理论为主的认证不同,DCA更注重实际操作能力,而一个…...

CentOS 7下‘Development Tools’和‘开发工具’组有区别吗?实测告诉你答案

CentOS 7下‘Development Tools’与‘开发工具’的隐藏关联:技术细节全解析在Linux系统管理中,yum的软件包组功能一直是个既实用又充满谜团的领域。特别是当系统语言环境与软件包元数据语言不一致时,开发者们常常会遇到一个有趣的现象&#x…...

DeepSeek RAG系统渗透测试全链路复现(含PoC代码与防御加固清单)

更多请点击: https://kaifayun.com 第一章:DeepSeek RAG系统渗透测试全链路复现概览 DeepSeek RAG系统作为面向企业级知识检索增强生成的典型架构,其安全边界不仅涵盖LLM服务层,更延伸至向量数据库、检索代理、提示工程网关及外部…...

CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测

CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测无人机技术的普及带来了新的安全挑战,从隐私侵犯到关键设施威胁,反无人机技术正成为计算机视觉领域的热点。CVPR 2023反无人机竞赛提供的开源数据集和基线模型&#xf…...

艾尔登法环帧率解锁终极指南:告别卡顿,畅享丝滑游戏体验

艾尔登法环帧率解锁终极指南:告别卡顿,畅享丝滑游戏体验 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_m…...

别再死记硬背了!用Multisim仿真+图解,5分钟搞懂三极管共射放大电路工作原理

用Multisim仿真图解5分钟掌握三极管共射放大电路三极管共射放大电路是电子技术中最基础也最关键的电路之一,但传统教材中复杂的公式推导和静态图解往往让初学者望而生畏。本文将带你用Multisim仿真软件,通过可视化的方式直观理解电路工作原理&#xff0c…...

Allegro等长设置翻车实录:拓扑模板法的3个坑与手工PinPair的救赎

Allegro等长设计避坑指南:从拓扑模板到精准PinPair的实战演进在高速PCB设计中,等长匹配如同精密钟表里的齿轮啮合,差之毫厘便可能导致整个系统时序崩塌。当设计从简单的点对点结构升级到多负载复杂拓扑时,Allegro用户常陷入两种典…...

从测速到配置:一套完整的cFosSpeed网络加速保姆级教程(适用于小白)

从零开始掌握cFosSpeed:网络加速全流程实战指南对于经常进行在线游戏、视频会议或大文件传输的用户来说,网络延迟和带宽利用率低下往往是影响体验的关键痛点。cFosSpeed作为一款专业的网络流量优化工具,能够显著改善这些问题,但许…...

C++中显示与隐式加载dll的使用与区别

一、什么是 DLL?DLL(Dynamic Link Library) 是 Windows 下的动态链接库,包含可被多个程序共享的函数、资源或类。使用 DLL 可以实现代码复用、模块化设计和插件机制。在 C 中,调用 DLL 中的函数有两种主要方式&#xf…...

告别命令行!用Python脚本批量管理Docker容器,效率提升不止一点点

告别命令行!用Python脚本批量管理Docker容器,效率提升不止一点点每次在终端敲入docker ps、docker stop、docker rm时,你是否想过——当容器数量超过两位数,这种重复劳动是否在消耗你的生命?去年我们团队在迁移微服务架…...

基于2D工程图几何特征与梯度提升模型的制造成本智能预测

1. 项目概述:从图纸到报价的智能革命在制造业,尤其是像汽车零部件这样的离散制造领域,报价速度直接决定了订单的生死。传统上,拿到一张新的2D工程图(DWG格式),成本工程师需要花上几天甚至几周时…...

ThinkPad开机嘀嘀响或报2100/2110错误?可能是硬盘松了!自己动手检测与修复指南

ThinkPad开机嘀嘀响或报2100/2110错误?三步排查硬盘接触不良问题ThinkPad用户对那个标志性的开机"嘀嘀"声再熟悉不过——正常情况下它意味着系统自检通过。但当这个声音变成急促的报警音,伴随屏幕上出现"2100 Detection error"或&qu…...

Win10家庭版别再卡了!保姆级教程:手动修复gpedit.msc路径,彻底关闭Antimalware Service

Win10家庭版性能优化实战:精准修复组策略路径与系统服务调优每次游戏激战正酣时突然卡顿,或是视频渲染到关键时刻系统响应迟缓,很多Win10家庭版用户都遭遇过这类困扰。任务管理器里那个名为"Antimalware Service Executable"的进程…...

混合求解器:用神经网络增强传统微分方程数值方法

1. 项目概述:当数值方法遇到机器学习在科学计算和工程仿真领域,求解常微分方程(ODE)和偏微分方程(PDE)是绕不开的核心任务。无论是模拟电路中的电流变化、预测天气系统的演变,还是分析机械结构的…...

Claude Code 之父:2026 年我一行代码都没写,编程已被 AI 解决

2026 年,你还在一行一行敲代码吗?Claude Code 的创造者、Anthropic 核心人物 Boris Cherny,在公开访谈里抛出一句让整个行业震动的话:2026 年到现在,我没有写过一行代码。所有开发工作,100% 交给 AI 代理完…...