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

@TOC# 1.作者介绍

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

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

电子邮件:[email protected]

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

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

电子邮件:[email protected]

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

相关推荐
Wish3D31 分钟前
阿里云OSS 上传文件 Python版本
开发语言·python·阿里云
success_a32 分钟前
大故障:阿里云核心域名爆炸了
数据库·阿里云·云计算
CRMEB定制开发15 小时前
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
阿里云·php·腾讯云·微信商城·php商城源码
家庭云计算专家18 小时前
ONLYOFFICE协作空间3.1.1 企业版 介绍及部署说明:家庭云计算专家
运维·服务器·云计算·onlyoffice·协作空间
小鱼小鱼.oO1 天前
阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
服务器·nginx·阿里云
avoidaily1 天前
使用Node.js分片上传大文件到阿里云OSS
阿里云·node.js·云计算
Elastic 中国社区官方博客1 天前
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
大数据·人工智能·elasticsearch·搜索引擎·云计算·全文检索·aws
agenIT1 天前
腾讯云 Python3.12.8 通过yum安装 并设置为默认版本
云计算·腾讯云
Johny_Zhao1 天前
阿里云数据库Inventory Hint技术分析
linux·mysql·信息安全·云计算·系统运维
容器魔方1 天前
议程一览 | KubeCon China 2025 华为云精彩前瞻
云原生·容器·云计算