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

相关推荐
云攀登者-望正茂4 小时前
使用 Datadog 和 Slack Alerts 监控 AWS EC2
云计算·aws·datadog
孤枫215 小时前
aws平台练习B
云计算·aws
阿明观察6 小时前
聚焦AI与大模型创新,紫光云如何引领云计算行业快速演进?
人工智能·云计算
Pluto & Ethereal7 小时前
新手宝塔部署thinkphp一步到位
运维·服务器·阿里云·php·腾讯云
Linux运维老纪8 小时前
GitLab之搭建(Building GitLab)
linux·mysql·云计算·gitlab·运维开发
zkmall11 小时前
阿里云 OSS 在 ZKmall开源商城的应用实践
阿里云·开源·云计算
飞龙观奥14 小时前
倚光科技:以创新之光,雕琢全球领先光学设计公司
其他·云计算
xiaoerbuyu123316 小时前
连不上阿里云服务器redis
服务器·redis·阿里云