一、前言
随着AI技术的发展,文字识别技术也得到了广泛的应用,OCR(Text Optical Character Recognition)就是其中之一。腾讯OCR是腾讯云提供的一种文字识别服务,可以将图片中的文字识别出来。本文将介绍如何使用Python3进行腾讯OCR文字识别。
二、前提条件
在本教程中,我们需要以下几个前提条件:
- 已注册腾讯云账号(若没有,请前往腾讯云官网进行注册)
- 已创建腾讯OCR API密钥(请前往腾讯云控制台创建)
- 已安装Python3和相关依赖库(如requests、base64等)
三、Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
- 导入依赖包
在使用Python3进行腾讯OCR文字识别前,需要先导入相关依赖库,具体如下:
import requests
import base64
import json
其中,requests库用于进行HTTP请求,base64库用于进行图片编码和解码,json库用于处理JSON数据。
- 准备图片
在进行文字识别前,我们需要准备一张图片,将图片保存到本地,并记录图片路径。在本例中,我们以一张名为“test.png”的图片为例。
- 读取图片并进行编码
将图片读取后,需要对图片进行编码,以便进行后续处理。在本例中,我们将图片进行base64编码。具体代码如下:
with open('test.png', 'rb') as f:
img = base64.b64encode(f.read())
其中,使用了Python的with语法,以确保文件读写后都能正确关闭。
- 发送HTTP请求并获取OCR结果
接下来,我们需要对图片进行OCR操作。在发送HTTP请求之前,需要进行以下参数设置:
- secretId:腾讯OCR API密钥ID
- secretKey:腾讯OCR API密钥Key
- img_url:图片的base64编码
- appid:腾讯OCR AppID
- url:要发送的HTTP请求地址
具体代码如下:
secretId = 'xxx'
secretKey = 'xxx'
img_url = str(img, encoding='utf-8')
appid = 'xxx'
url = 'https://recognition.image.myqcloud.com/ocr/general'
headers = {'Host': 'recognition.image.myqcloud.com',
'Authorization': '', 'Content-Type': 'application/json'}
payload = {"appid": appid, "url": img_url}
payload = json.dumps(payload)
headers['Authorization'] = sign(secretId, secretKey, payload.encode('utf-8'))
response = requests.post(url=url, data=payload, headers=headers)
result = json.loads(response.content.decode('utf-8'))
其中,headers中的Authorization需要使用腾讯云提供的签名方法进行计算,以确保请求的合法性。值得注意的是,腾讯OCR有多个API,具体请求地址要根据需求进行选择。在本例中,我们选择的是通用印刷体OCR(general)。
- 解析OCR结果并输出
在获取OCR结果后,需要对结果进行解析并输出。具体代码如下:
for item in result["data"]["items"]:
print(item["itemstring"])
其中,OCR返回的结果是一个JSON格式的数据,需要逐层解析后才能将其中的文字进行输出。
四、示例说明
例1:使用Python3进行腾讯OCR文字识别
在进行OCR操作前,需要确保已符合前提条件。具体代码如下:
import requests
import base64
import json
def sign(secretId, secretKey, payload):
import hmac
import hashlib
import datetime
date = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
signStr = 'date: ' + date + '\n' + 'source: ' + 'recognition.image.myqcloud.com' + '\n' \
+ 'POST /ocr/general HTTP/1.1\n' + 'content-type: application/json\n'
signStr += 'image='
signStr += base64.b64encode(payload).decode('utf-8')
signBytes = hmac.new(secretKey.encode('utf-8'), signStr.encode('utf-8'), digestmod=hashlib.sha1).digest()
sign = base64.b64encode(signBytes).decode('utf-8')
signature = 'hmac sha1 ' + secretId + ':' + sign
return signature
secretId = 'xxx'
secretKey = 'xxx'
img_url = ""
with open('test.png', 'rb') as f:
img_url = str(base64.b64encode(f.read()), encoding='utf-8')
appid = 'xxx'
url = 'https://recognition.image.myqcloud.com/ocr/general'
headers = {'Host': 'recognition.image.myqcloud.com',
'Authorization': '', 'Content-Type': 'application/json'}
payload = {"appid": appid, "image": img_url}
payload = json.dumps(payload)
headers['Authorization'] = sign(secretId, secretKey, payload.encode('utf-8'))
response = requests.post(url=url, data=payload, headers=headers)
result = json.loads(response.content.decode('utf-8'))
for item in result["data"]["items"]:
print(item["itemstring"])
在本例中,我们读取了名为“test.png”的图片,并将图片进行base64编码,然后使用腾讯OCR API进行OCR操作。最后,我们解析OCR结果并将其中的文字进行输出。
例2:使用Python3进行批量OCR操作
在本例中,我们假设有多张图片需要进行OCR操作,我们可以使用Python3进行批量操作。具体代码如下:
import requests
import base64
import json
import os
def sign(secretId, secretKey, payload):
import hmac
import hashlib
import datetime
date = datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')
signStr = 'date: ' + date + '\n' + 'source: ' + 'recognition.image.myqcloud.com' + '\n' \
+ 'POST /ocr/general HTTP/1.1\n' + 'content-type: application/json\n'
signStr += 'image='
signStr += base64.b64encode(payload).decode('utf-8')
signBytes = hmac.new(secretKey.encode('utf-8'), signStr.encode('utf-8'), digestmod=hashlib.sha1).digest()
sign = base64.b64encode(signBytes).decode('utf-8')
signature = 'hmac sha1 ' + secretId + ':' + sign
return signature
secretId = 'xxx'
secretKey = 'xxx'
appid = 'xxx'
url = 'https://recognition.image.myqcloud.com/ocr/general'
headers = {'Host': 'recognition.image.myqcloud.com',
'Authorization': '', 'Content-Type': 'application/json'}
path = "/path/to/image/folder/"
for file in os.listdir(path):
if file.endswith(".jpg") or file.endswith(".png"):
with open(file, 'rb') as f:
img_url = str(base64.b64encode(f.read()), encoding='utf-8')
payload = {"appid": appid, "image": img_url}
payload = json.dumps(payload)
headers['Authorization'] = sign(secretId, secretKey, payload.encode('utf-8'))
response = requests.post(url=url, data=payload, headers=headers)
result = json.loads(response.content.decode('utf-8'))
for item in result["data"]["items"]:
print(item["itemstring"])
在本例中,我们将需要OCR的图片存储在“/path/to/image/folder/”目录中,然后使用Python3进行批量操作。我们遍历该目录下的文件,如果是以“.jpg”或“.png”结尾的文件,则进行OCR操作并输出结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解 - Python技术站