调用阿里云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、复杂场景影响:反光、扭曲、模糊图片可能降低识别准确率(尽管系统默认增强处理)。

相关推荐
Johny_Zhao20 分钟前
Ubuntu系统安装部署Pandawiki智能知识库
linux·mysql·网络安全·信息安全·云计算·shell·yum源·系统运维·itsm·pandawiki
云资源服务商3 小时前
阿里云Flink:开启大数据实时处理新时代
大数据·阿里云·云计算
数据与人工智能律师4 小时前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
国际云,接待10 小时前
微软服务器安全问题
运维·服务器·云原生·云计算·azure
m0_6948455711 小时前
服务器需要备案吗?在哪些地区需要备案?
linux·运维·服务器·云计算
云资源服务商17 小时前
解锁阿里云日志服务SLS:云时代的日志管理利器
服务器·阿里云·云计算
朱包林18 小时前
day45-nginx复杂跳转与https
linux·运维·服务器·网络·云计算
m0_694845571 天前
服务器如何配置防火墙规则开放/关闭端口?
linux·服务器·安全·云计算
安 当 加 密1 天前
多云密钥统一管理实战:CKMS对接阿里云/华为云密钥服务
数据库·阿里云·华为云
观测云1 天前
观测云 × AWS SSO:权限治理可观测实践
云计算·aws