孟莉苹,女,西安工程大学电子信息学院,2021级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:[email protected]
凭借领先的人工智能与知识图谱技术,对身份证正反面自动识别,并提取姓名、出生日期、身份证号、住址、性别、民族、发证机关等身份证实体信息。
步骤一 :浏览器搜索阿里云,使用支付宝或者其他阿里APP扫码后用手机验证码登陆。
#导入所需的库
#!/usr/bin/env python3
import requests
import os
import sys
from base64 import b64encode
from pathlib import Path
Urllib 库是 Python 内置的 HTTP 请求库,可用于访问网页,并且与网页交互,不需要额外安装就可使用,它包含四个模块:
▪ urllib.request:最基本的 HTTP 请求模块,打开和读取URL,可以用它来模拟发送请求;就像在浏览器里输入网址后敲击回车一样。
▪ urllib.error:异常处理模块,如果出现请求错误,可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。
▪ urllib.parse :一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等。
▪ urllib.robotparser :用来识别网站的 robots.txt 文件,用的比较少。
Base64库是网络上最常见的用于传输字节码的编码方式之一,一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而,不能直接将二进制数据转换成字符数据,因为网络传输只能传输可打印字符。在ASCII码中规定, 32~126这95个字符属于可打印字符,也就是说网络只能传输这95个字符,不在这个范围内的字符无法传输。其他字符的传输方式就可以通过使用Base64。
URL:网络上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。简单地说URL就是网络地址,俗称“网址”。
一般语法格式为:protocol : // hostname[:port] / path / [;parameters][?query]#fragment
Protocol(协议):指定使用的传输协议,最常用的是HTTP协议,格式为HTTP://。
Hostname(主机名):指存放资源的服务器的域名系统主机名或IP地址。
Path(路径):一般用来表示主机上的一个目录或文件地址。
#!/usr/bin/env python3
import requests
import os
import sys
from base64 import b64encode
from pathlib import Path
HOST = "https://cardiddecode.market.alicloudapi.com"
PATH = "/api/decode_cardid_aliyun"
def verify(url, appcode, fname):
data = {"imgbase64": b64encode(Path(fname).read_bytes()).decode()}
headers = {
"Authorization": f"APPCODE {appcode}",
"Content-Type": "application/json; charset=UTF-8",
}
requests.packages.urllib3.disable_warnings()
r = requests.post(url, json=data, headers=headers, verify=False)
r.raise_for_status()
return r.json()
def main():
url = HOST + PATH
appcode = '***' # 自己的APPcode
fname = 'E:/CSDN-exam/Python使用阿里API进行身份证识别/7.jpg' # 要识别的身份证地址
result = verify(url, appcode, fname)
print(f"Response from ``{url}`` for ``{fname}``:\n{result}")
def load_appcode():
appcode = os.getenv('ALI_APPCODE')
if not appcode:
for fname in ("appcode", "appcode.txt"):
p = Path(fname)
if p.exists():
appcode = p.read_text().strip()
break
else:
appcode = input("appcode: ").strip()
return appcode
def image_name():
if sys.argv[1:]:
fname = sys.argv[1]
else:
fname = None
if not fname or not Path(fname).exists():
for suffix in (".jpg", ".png"):
imgs = list(Path().glob(f"*{suffix}"))
if imgs:
fname = imgs[0]
break
else:
fname = input("Image file name: ").strip()
return fname
if __name__ == "__main__":
main()
1.直接跳转购买阿里云的身份证识别OCR链接:
https://market.aliyun.com/products/57124001/cmapi028587.html#sku=yuncode2258700001
2.代码参考
https://blog.csdn.net/jaket5219999/article/details/83691278?ops_request_misc=&request_id=&biz_id=102&utm_term=python3%E8%B0%83%E7%94%A8%E9%98%BF%E9%87%8CAPI%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E8%AF%81%E8%AF%86%E5%88%AB&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-83691278.142v7pc_search_result_control_group,157v4control&spm=1018.2226.3001.4187