python爬虫代码提取图片中的文字_Python从图片提取文字

需求:读取图片内的文字,图片包含url形式的和image形式的

实现思路:python调用腾讯api,参考腾讯官方文档:https://cloud.tencent.com/document/product/866/17596

步骤:调用api需要配置header请求头,请求头需要鉴权签名,鉴权签名需要api密钥。

鉴权签名:https://cloud.tencent.com/document/product/866/17734

api密钥的获取:登陆腾讯云https://console.cloud.tencent.com/cam/capi

代码如下

import time

import base64

import hmac

import hashlib

from hmac import new as hmac

import requests

import json

import datetime

import random

'''通过登陆腾讯云获取自己的api密钥'''

appid='12******25'

SecretID='AKIDGS************************NPpyNp'

SecretKey='Xt*************************iwybH'

'''初始化除api外的其他参数'''

currentTime = int(time.time()) #当前时间戳

expiredTime = currentTime+2592000 #签名的有效期 此处定义为当前时间+30天

bucket=''# 图片资源的组织管理单元,历史遗留字段,可不填

rand=7648353324 #随机串,通过函数 random.randint(1,9999999999) 生成

fileid='' #资源存储的唯一标识,单次签名必填;多次签名选填,如填写则会验证与当前操作的文件路径是否一致

'''配置 拼接签名串'''

src_str='a='+appid+'&b='+bucket+'&k='+SecretID+'&e='+str(expiredTime)+'&t='+str(currentTime)+'&r='+str(rand)+'&f='+fileid

'''定义生成签名的函数'''

def hash_hmac(ac_key,orignal):

SignTmp = hmac(bytes(ac_key,'utf-8'),bytes(orignal,'utf-8'), hashlib.sha1).digest()#+'.'+bytes(orignal,'utf-8')

Sign = base64.b64encode(SignTmp+orignal.encode())

return Sign

'''生成签名'''

authorization=hash_hmac(SecretKey,src_str)

'''定义请求协议'''

url='https://recognition.image.myqcloud.com/ocr/handwriting'

'''配置请求头'''

headers={

'Authorization':authorization,

'Host':'recognition.image.myqcloud.com'

}

# 使用 url 的请求示例

url_img='https://images.jiandaoyun.com/Fm0I5jLH9zGFpYn5SLoEP-EhWOmC'#+'.png'

data_img={'appid':appid,'url':url_img}

'''

#使用 image 的请求示例

url_img='kuaiji-5-243.jpg',open('D:\\python\\kuaiji\\kuaiji-5-243.jpg','rb'),'image/jpeg'

data_img={'appid':appid,'image':(url_img)}

'''

r = requests.post(url,files=data_img,headers=headers)

data=json.loads(r.content.decode('utf-8'))

count=len(data['data']['items'])

try:

for i in range(count):

x=data['data']['items'][i]['itemcoord']['x']

y=data['data']['items'][i]['itemcoord']['y']

content=data['data']['items'][i]['itemstring']

print(content)

except:

print('wrong')

代码执行结果

293098-20181106104049330-2083915803.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值