教你如何白嫖腾讯云证件,卡片识别
用Python调用腾讯云接口,免费白嫖证件,卡片甚至印章识别。每月都有1000次的免费额度,不嫖白不嫖啊。。。。
首先,登录主页https://cloud.tencent.com,用微信登录就可以。
点击主页上方的“产品”,进入产品页面,往下拖动,找到“人工智能与机器学习”,再找到“文字识别”。
或直接进入这个网址:https://cloud.tencent.com/product/ocr
我们以识别名片为例。
在此你可以上传一张本地图片进行测试。
我们直接点击“了解详情”,进入详情页面:https://cloud.tencent.com/document/product/866/36214
简单的浏览一遍。。。。
我们直接进入“点击调试”,进入调试页面https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=BusinessCardOCR
中间有几个参数需要填写。
region,这个必选,谁便选一个就可以,我们选华东地区北京(ap-beijing)。
表单中有3个参数选填,
ImageBase64和ImageUrl 2个必填一个,这个是识别的图片,可以是Base64数值,也可以是一个网络图片。
Config可不填。
我们先找一个网络图片测试一下,https://ocr-demo-1254418846.cos.ap-guangzhou.myqcloud.com/card/BusinessCardOCR/BusinessCardOCR1.jpg
将上面的网址复制到“ImageUrl (选填) ”下方,
点击“发起调用”,会让你身份验证,再用微信扫一扫即可。右侧就会显示出结果。
我们点击右侧上方“代码示例”,选择“SDK”--"Python”,就能看到代码了,代码复制下来就可以使用了,但是首先得解决几个问题。
第一个:安装库。页面上有安装方法,点击“SDK信息”即可看到。很小,直接安装就行,不必使用国内镜像。
pip install tencentcloud-sdk-python-ocr
第二个:账号和密钥。点击“获取密钥”,进入获取密钥页面,点击“新建密钥”,可以创建2个密钥。
创建时一定将SecretId和SecretKey复制下来,或下载CSV文件,CSV文件中有SecretId和SecretKey。一旦关闭了页面,将查不到SecretKey了
现在库和密钥都有了,就可以使用了,把代码复制到IDE中。并将SecretId和SecretKey修改为自己的就行了。
现在呢,只是识别了一张网络图片,那么怎么识别本地的图片呢。那么就要用到ImageBase64了(刚才用到的是ImageUrl)。如何将本地的图片转成Base64呢?
用PIL,io,base64实现。可以去网上搜搜怎么转,我是用以下方法实现的:
import io
import base64
from PIL import Image
# 打开并读取图像文件
image = Image.open(r'D:\work\python\mingpian\1.jpg')
# 转换图像到RGB格式
rgb_image = image.convert("RGB")
# 创建字节流对象
byte_stream = io.BytesIO()
# 保存图像到字节流中
rgb_image.save(byte_stream, format='JPEG')
# 从字节流中获取图像的base64编码
base64_data = base64.b64encode(byte_stream.getvalue()).decode('utf-8')
# 关闭图像文件
image.close()
# 输出结果
print(base64_data)
我们就可以得到base64数据了。讲这个数据复制到ImageBase64里。注意将ImageUrl (选填)里的数据删除。
我们再看一下“代码示例”,只有params变了,其他的都没变。之前网络图片时params是ImageUrl ,而此时params是ImageBase64,正好对应。
那现在基本就知道了。只要将本地的图片变成base64格式,就可调用腾讯云进行识别了。
如果有很多张名片图片,用for循环一遍就行了。
对于,识别的结果就不多解释了。
有一点说明,官方用resp.to_json_string()将结果转为了字符串,不是更好处理,我们可以resp.BusinessCardInfos,变成一个列表,方便提取数据,对比一下。
再配合上处理电子表格的库,就可以实现提取了。
参考代码如下:
import io
import base64
from PIL import Image
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models
import xlwings
import os
#替换为你的ID和KEY
SecretId = "**************"
SecretKey = "***************"
wb = xlwings.Book('1.xlsx')
sheet = wb.sheets['Sheet1']
def business_card_recognition(SecretId,SecretKey,base64_data):
cred = credential.Credential(SecretId,SecretKey )
httpProfile = HttpProfile()
httpProfile.endpoint = "ocr.tencentcloudapi.com"
# 实例化一个client选项,可选的,没有特殊需求可以跳过
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)
req = models.BusinessCardOCRRequest()
params = {"ImageBase64": base64_data,}
req.from_json_string(json.dumps(params))
resp = client.BusinessCardOCR(req)
return (resp.BusinessCardInfos)
def write_to_excel(result):
name = ''
position = ''
company = ''
address = ''
code = ''
mail =''
website = ''
mobile = ''
phone = ''
fax = ''
for i in result:
if i.Name == '姓名':
if name == '':
name = i.Value
else:
name = name + '\\' + i.Value
elif i.Name == '职位':
if position == '':
position = i.Value
else:
position = position + '\\' + i.Value
elif i.Name == '公司':
if company == '':
company = i.Value
else:
company = company + '\\' + i.Value
elif i.Name == '地址':
if address == '':
address = i.Value
else:
address = address + '\\' + i.Value
elif i.Name == '邮编':
if code == '':
code = i.Value
else:
code = code + '\\' + i.Value
elif i.Name == '邮箱':
if mail == '':
mail = i.Value
else:
mail = mail + '\\' + i.Value
elif i.Name == '网址':
if website == '':
website = i.Value
else:
website = website + '\\' + i.Value
elif i.Name == '手机':
if mobile == '':
mobile = i.Value
else:
mobile = mobile + '\\' + i.Value
elif i.Name == '电话':
if phone == '':
phone = i.Value
else:
phone = phone + '\\' + i.Value
elif i.Name == '传真':
if fax == '':
fax = i.Value
else:
fax = fax + '\\' + i.Value
row_n = sheet.used_range.last_cell.row + 1
sheet['a'+str(row_n)].value = name
sheet['b'+str(row_n)].value = position
sheet['c'+str(row_n)].value = company
sheet['d'+str(row_n)].value = address
sheet['e'+str(row_n)].value = code
sheet['f'+str(row_n)].value = mail
sheet['g'+str(row_n)].value = website
sheet['h'+str(row_n)].value = mobile
sheet['i'+str(row_n)].value = phone
sheet['j'+str(row_n)].value = fax
def to_base64_data(pic_path):
# 打开并读取图像文件
image = Image.open(pic_path)
# 转换图像到RGB格式
rgb_image = image.convert("RGB")
# 创建字节流对象
byte_stream = io.BytesIO()
# 保存图像到字节流中
rgb_image.save(byte_stream, format='JPEG')
# 从字节流中获取图像的base64编码
base64_data = base64.b64encode(byte_stream.getvalue()).decode('utf-8')
return (base64_data)
pic_file = r'D:\work\python\mingpian\pic'
pic_list = os.listdir(pic_file)
for i in pic_list:
pic_path = os.path.join(pic_file,i)
base64_data = to_base64_data(pic_path)
result = business_card_recognition(SecretId,SecretKey,base64_data)
write_to_excel(result)
处理电子表格的库用的是xlwings,需要先新建一个电子表格并打开。
在此只是抛砖引玉,给大家一个简单的开始教程,更多解释可以看看官方文档。其他功能于此类似,每月都有1000次的免费次数,还是挺爽歪歪的。
补充一点说明啊,虽然一个月有1000次的免费额度,但是为了防止使用过度而产生费用,需要在设置中取消“开通后付费”选项。
具体操作,找到并进入右上角的“控制台”
在控制台里找到你开通过的服务,如“文字识别”
进入“文字识别”控制台,在左侧找到“设置”
然后,关闭“开通后付费”即可。
推荐使用下边这个方法插入代码
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
这都能白嫖 非常的不错呀,非常喜欢,感觉非常的强大。 楼主厉害啦!{:1_919:} 一个月一千次对于日常绝对是够用了 这个好,AI大模型数据 感谢分享。。。。 我靠腾讯,还有这儿玩意儿。。。赶紧试试其他的。。。{:1_918:} 挺好,感谢分享