调用阿里云API实现身份证文字识别

@TOC# 1.作者介绍

姚元帅,男,西安工程大学电子信息学院,2024级研究生

研究方向:机器视觉与人工智能

电子邮件:3183969029@qq.com

乔幸荣,女,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组

研究方向:模式识别与智能系统

电子邮件:2029518801@qq.com

2.API相关介绍

2.1 API的发展阶段

1)早期阶段(20世纪50-70年代)

这一阶段的API主要用于操作系统内部功能接口,供程序开发人员使用,功能简单,是软件开发的基础工具,为后续发展奠定基础。

2)分布式时代(20世纪80年代-世纪末)

API开始用于分布式系统和网络应用,实现不同系统和语言之间的交互,变得更为复杂和结构化,推动了网络技术发展。

3)互联网时代(21世纪至今)

服务化API盛行,互联网公司开放API供开发者调用,推动"软件即服务"发展,如百度API、腾讯云等,促进生态繁荣。

2.2 OCR的介绍

阿里智能云 OCR 身份证文字识别是阿里云利用先进的光学字符识别(OCR)技术和深度学习算法,能够快速、准确地识别身份证上的各种文字信息,包括姓名、性别、民族、出生日期、地址、身份证号码、签发机关、有效期限等字段,将这些原本以图像形式存在的文字转化为计算机能够理解和处理的文本数据,同时保证较高的识别准确率和效率,为各种需要身份信息验证和处理的业务场景提供了便捷、高效的解决方案,帮助企业和机构实现自动化的信息采集与处理,降低人工成本,提高业务流程的效率和准确性。

2.3 OCR的关键技术点

深度学习算法与模型优化:基于阿里云人工智能平台 PAI,采用深度优化的深度学习框架 PAl-Tensorflow。

图像预处理与增强技术:对反光、扭曲、倾斜、模糊等低质量图像进行自动旋转、清晰度增强等处理。结构化识别与风险控制:可识别身份证正反面的姓名、性别、民族、地址、身份证号等信息。

3.调用阿里智能云OCR实现身份证文字识别

3.1 API获取

1)浏览器搜索"阿里智能云"

2)在网页右上角进行注册登录

3)在搜索栏搜索OCR身份证文字识别,找到身份证OCR文字识别的产品

如果找不到该产品,复制该网址能直接跳转到产品页面。OCR产品页面网址:https://market.aliyun.com/apimarket/detail/cmapi010401?spm=5176.730005.result.4.306e5a90Oq3HOb\&innerSource=search#sku=yuncode4401000018

4)点击免费试用,进入控制台,在已购买的服务中找到该产品的APPCODE。

3.2 完整代码

python 复制代码
# -*- coding: utf-8 -*-

import json
import base64
try :
    from urllib.error import HTTPError
    from urllib.request import Request,urlopen
except ImportError:
    from urllib2 import Request, urlopen, HTTPError

REQUEST_URL = "https://cardnumber.market.alicloudapi.com/rest/160601/ocr/ocr_idcard.json"  # 请求接口


# 将本地图片转成base64编码的字符串,或者直接返回远程图片
def get_img(img_file):
    if img_file.startswith("http"):
        return img_file
    else:
        with open(img_file, 'rb') as f:  # 以二进制读取本地图片
            data = f.read()
    try:
        encodestr = str(base64.b64encode(data),'utf-8')
    except TypeError:
        encodestr = base64.b64encode(data)

    return encodestr

# 发送请求,获取识别信息
def posturl(headers, body):
    try:
        params=json.dumps(body).encode(encoding='UTF8')
        req = Request(REQUEST_URL, params, headers)
        r = urlopen(req)
        html = r.read()
        return html.decode("utf8")
    except HTTPError as e:
        print(e.code)
        print(e.read().decode("utf8"))

def parse(appcode, img_file, side='face'):
    config = {'side': side}  # face:表示正面;back表示反面

    # 请求体
    body = {"configure": config}
    img_info = get_img(img_file)
    body.update({'image':img_info})

    # 请求头
    headers = {
        'Authorization': 'APPCODE %s' % appcode,
        'Content-Type': 'application/json; charset=UTF-8'
    }

    html = posturl(headers, body)
    print(html)

if __name__=="__main__":
    # 配置信息
    appcode = "#填入你的appcode"
    img_file = ""

    parse(appcode, img_file)

3.3 效果展示

4.问题与分析

1、在图像质量方面,确保身份证照片或扫描件清晰,无模糊、阴影、反光等问题。模糊的图像可能导致字符识别不准确,反光可能使部分区域信息丢失,影响识别效果,单张图片不超过10MB。

2、信息安全方面,在传输和存储身份证信息过程中,要确保数据经过加密处理,防止信息被窃取或篡改。阿里智能云通常会提供相应的加密技术和措施,但用户也需了解并确认相关加密机制是否启用和有效。

3、格式要求:支持 JPG、JPEG、PNG、BMP 格式,不支持 GIF 等动图。

文件大小:单张图片不超过 10MB。

4、复杂场景影响:反光、扭曲、模糊图片可能降低识别准确率(尽管系统默认增强处理)。

相关推荐
运维成长记6 小时前
关于linux运维 出现高频的模块认知
运维·职场和发展·云计算
奋进的孤狼12 小时前
【Spring AI】阿里云DashScope灵积模型
人工智能·spring·阿里云·ai·云计算
Hermann13 小时前
云原生系统健壮性浅谈
架构·云计算
数据与人工智能律师1 天前
数字迷雾中的安全锚点:解码匿名化与假名化的法律边界与商业价值
大数据·网络·人工智能·云计算·区块链
吳所畏惧1 天前
NVM踩坑实录:配置了npm的阿里云cdn之后,下载nodejs老版本(如:12.18.4)时,报404异常,下载失败的问题解决
前端·windows·阿里云·npm·node.js·batch命令
Johny_Zhao1 天前
Centos8搭建hadoop高可用集群
linux·hadoop·python·网络安全·信息安全·云计算·shell·yum源·系统运维·itsm
_可乐无糖2 天前
AWS WebRTC:我们的业务模式
云计算·音视频·webrtc·aws
Kentos(acoustic ver.)2 天前
云原生 —— K8s 容器编排系统
云原生·容器·kubernetes·云计算·k8s
Britz_Kevin2 天前
从零开始的云计算生活——番外6,使用zabbix对中间件监控
云计算·生活·zabbix
贺贺丿2 天前
Docker2-容器应用工具及docker命令
linux·运维·docker·容器·自动化·云计算