吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3058|回复: 30
收起左侧

[Python 原创] 教你如何白嫖腾讯云证件,卡片识别

  [复制链接]
lianxiang1122 发表于 2024-3-1 16:49

用Python调用腾讯云接口,免费白嫖证件,卡片甚至印章识别。每月都有1000次的免费额度,不嫖白不嫖啊。。。。
屏幕截图 2024-03-01 154938.png
屏幕截图 2024-03-01 155543.png

首先,登录主页https://cloud.tencent.com,用微信登录就可以。
点击主页上方的“产品”,进入产品页面,往下拖动,找到“人工智能与机器学习”,再找到“文字识别”。
或直接进入这个网址:https://cloud.tencent.com/product/ocr

屏幕截图 2024-03-01 160118.png

我们以识别名片为例。
屏幕截图 2024-03-01 160357.png

在此你可以上传一张本地图片进行测试。
我们直接点击“了解详情”,进入详情页面:https://cloud.tencent.com/document/product/866/36214
简单的浏览一遍。。。。
屏幕截图 2024-03-01 160734.png

我们直接进入“点击调试”,进入调试页面https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=BusinessCardOCR

屏幕截图 2024-03-01 160950.png

中间有几个参数需要填写。
region,这个必选,谁便选一个就可以,我们选华东地区北京(ap-beijing)。

表单中有3个参数选填,
ImageBase64和ImageUrl 2个必填一个,这个是识别的图片,可以是Base64数值,也可以是一个网络图片。
Config可不填。

我们先找一个网络图片测试一下,
将上面的网址复制到“ImageUrl[color=rgba(0, 0, 0, 0.4) !important] (选填) ”下方,

屏幕截图 2024-03-01 161508.png

点击“发起调用”,会让你身份验证,再用微信扫一扫即可。右侧就会显示出结果。

我们点击右侧上方“代码示例”,选择“SDK”--"Python”,就能看到代码了,代码复制下来就可以使用了,但是首先得解决几个问题。

屏幕截图 2024-03-01 161719.png

第一个:安装库。页面上有安装方法,点击“SDK信息”即可看到。很小,直接安装就行,不必使用国内镜像。
pip install tencentcloud-sdk-python-ocr

第二个:账号和密钥。点击“获取密钥”,进入获取密钥页面,点击“新建密钥”,可以创建2个密钥。
创建时一定将SecretId和SecretKey复制下来,或下载CSV文件,CSV文件中有SecretId和SecretKey。一旦关闭了页面,将查不到SecretKey了
屏幕截图 2024-03-01 162301.png

屏幕截图 2024-03-01 162418.png


现在库和密钥都有了,就可以使用了,把代码复制到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[color=rgba(0, 0, 0, 0.4) !important] (选填)里的数据删除。

我们再看一下“代码示例”,只有params变了,其他的都没变。之前网络图片时params是ImageUrl ,而此时params是ImageBase64,正好对应。

屏幕截图 2024-03-01 163559.png

那现在基本就知道了。只要将本地的图片变成base64格式,就可调用腾讯云进行识别了。
如果有很多张名片图片,用for循环一遍就行了。

对于,识别的结果就不多解释了。
有一点说明,官方用resp.to_json_string()将结果转为了字符串,不是更好处理,我们可以resp.BusinessCardInfos,变成一个列表,方便提取数据,对比一下。
屏幕截图 2024-03-01 164402.png

再配合上处理电子表格的库,就可以实现提取了。
参考代码如下:

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,需要先新建一个电子表格并打开。

屏幕截图 2024-03-01 164659.png

在此只是抛砖引玉,给大家一个简单的开始教程,更多解释可以看看官方文档。其他功能于此类似,每月都有1000次的免费次数,还是挺爽歪歪的。

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lianxiang1122 发表于 2024-3-7 16:02
补充一点说明啊,虽然一个月有1000次的免费额度,但是为了防止使用过度而产生费用,需要在设置中取消“开通后付费”选项。
具体操作,找到并进入右上角的“控制台”

屏幕截图 2024-03-07 155916.png

在控制台里找到你开通过的服务,如“文字识别”

屏幕截图 2024-03-07 160029.png

进入“文字识别”控制台,在左侧找到“设置”

屏幕截图 2024-03-07 160157.png

然后,关闭“开通后付费”即可。

屏幕截图 2024-03-07 160222.png
苏紫方璇 发表于 2024-3-4 14:41
推荐使用下边这个方法插入代码
【公告】发帖代码插入以及添加链接教程(有福利)
https://www.52pojie.cn/thread-713042-1-1.html
(出处: 吾爱破解论坛)
s913105 发表于 2024-3-1 17:59
snakenba580 发表于 2024-3-1 20:05
非常的不错呀,非常喜欢,感觉非常的强大。
野杂鱼 发表于 2024-3-1 20:25
楼主厉害啦!
Datch 发表于 2024-3-1 20:27
一个月一千次对于日常绝对是够用了
头像被屏蔽
moruye 发表于 2024-3-1 20:49
提示: 作者被禁止或删除 内容自动屏蔽
yrycw 发表于 2024-3-1 21:02
这个好,AI大模型数据
HNMR 发表于 2024-3-1 21:07
感谢分享。。。。
mavericklaw 发表于 2024-3-1 21:28
我靠腾讯,还有这儿玩意儿。。。赶紧试试其他的。。。
天云尊者 发表于 2024-3-1 21:52
挺好,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 08:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表