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

相关推荐
Akamai中国13 小时前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·云服务·云存储
oMcLin13 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 OpenStack 云计算平台,实现多租户虚拟化与弹性伸缩?
ubuntu·云计算·openstack
Tob管理笔记16 小时前
建筑业如何精准开拓优质客户?技术驱动下的方法论与实践
大数据·云计算·数据库开发
咕噜企业分发小米20 小时前
独立IP服务器有哪些常见的应用场景?
人工智能·阿里云·云计算
Mr. zhihao21 小时前
使用 KMS 管理阿里云 OSS 临时凭证(AK/SK/STS):原理、对比与实战代码示例
阿里云·云计算
奇树谦21 小时前
FastDDS阿里云DDSRouter安装和使用(失败)
elasticsearch·阿里云·云计算
虎冯河21 小时前
阿里云 + 宝塔面板环境Python 项目从 0 到 1 部署全流
python·阿里云·云计算
China_Yanhy1 天前
后端开发者的 AWS 大数据指南:从 RDS 到 Data Lake
大数据·云计算·aws
周之鸥1 天前
宝塔面板 + 阿里云 DNS 实现 Let’s Encrypt 证书自动续签(详细图文教程)
阿里云·云计算·宝塔面板·let’s encrypt·自动续签