Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解

一、前言

随着AI技术的发展,文字识别技术也得到了广泛的应用,OCR(Text Optical Character Recognition)就是其中之一。腾讯OCR是腾讯云提供的一种文字识别服务,可以将图片中的文字识别出来。本文将介绍如何使用Python3进行腾讯OCR文字识别。

二、前提条件

在本教程中,我们需要以下几个前提条件:

  1. 已注册腾讯云账号(若没有,请前往腾讯云官网进行注册)
  2. 已创建腾讯OCR API密钥(请前往腾讯云控制台创建)
  3. 已安装Python3和相关依赖库(如requests、base64等)

三、Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解

  1. 导入依赖包

在使用Python3进行腾讯OCR文字识别前,需要先导入相关依赖库,具体如下:

import requests
import base64
import json

其中,requests库用于进行HTTP请求,base64库用于进行图片编码和解码,json库用于处理JSON数据。

  1. 准备图片

在进行文字识别前,我们需要准备一张图片,将图片保存到本地,并记录图片路径。在本例中,我们以一张名为“test.png”的图片为例。

  1. 读取图片并进行编码

将图片读取后,需要对图片进行编码,以便进行后续处理。在本例中,我们将图片进行base64编码。具体代码如下:

with open('test.png', 'rb') as f:
    img = base64.b64encode(f.read())

其中,使用了Python的with语法,以确保文件读写后都能正确关闭。

  1. 发送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)。

  1. 解析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技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python交换字典键值对的四种方法实例

    Python交换字典键值对的四种方法实例 在 Python 编程中,字典是非常常用的数据类型之一。字典由键和值两部分构成,其中键是唯一的而值则可以重复。在某些情况下我们需要将字典中的键和值进行交换,本文将介绍 Python 中交换字典键值对的四种方法。 方法一:使用字典推导式 如果字典中没有重复的值,我们可以使用字典推导式来生成一个新的字典。 origin_…

    python 2023年5月13日
    00
  • 如何按python字典中值的最后一个字母排序?

    【问题标题】:How do I sort by the last letter of a value in a dictionay in python?如何按python字典中值的最后一个字母排序? 【发布时间】:2023-04-03 03:11:01 【问题描述】: 鉴于以下字典列表,我如何按姓名的最后一个字母进行排序? list_of_dicts = […

    Python开发 2023年4月8日
    00
  • Python3压缩和解压缩实现代码

    下面是Python3压缩和解压缩实现代码的完整攻略。 一、压缩文件 1. 导入压缩模块 在Python中,有一个叫做zipfile的压缩模块可以使用。首先需要导入这个模块,才能使用其中的方法。示例代码如下: import zipfile 2. 创建压缩文件对象 在使用zipfile进行压缩操作时,需要先创建一个压缩文件对象。对象的创建方法是通过ZipFile…

    python 2023年6月3日
    00
  • Python 中pandas.read_excel详细介绍

    以下是“Python中pandas.read_excel详细介绍”的完整实例教程。 一、read_excel函数简介 首先,需要明确的是,pandas库是Python数据分析的中心库之一,提供了许多用于数据处理的函数,包括read_excel函数,它允许用户读取Excel文件并将其转换为DataFrame对象。read_excel()是pandas的一个函数…

    python 2023年5月13日
    00
  • 是否可以更改表以包含对 python 数据联合中上游表的引用?

    【问题标题】:Is it possible to alter a table to include reference to an upstream table in datajoint for python?是否可以更改表以包含对 python 数据联合中上游表的引用? 【发布时间】:2023-04-08 00:28:01 【问题描述】: 我们希望更改一个…

    Python开发 2023年4月8日
    00
  • 容易被忽略的Python内置类型

    当我们学习Python编程语言时,通常只关注一些最常见的数据类型,比如:数字,字符串和列表等。然而,Python还有许多不常见但非常有用的内置数据类型,在编程过程中很容易地被忽略。接下来,我们将详细讲解这些容易被忽略的Python内置类型。 1. 元组(Tuple) 元组与列表类似,但相对少用,常用来临时存储、传递和返回多个值。与列表不同的是,元组是只读的,…

    python 2023年5月14日
    00
  • 基于python的七种经典排序算法(推荐)

    下面是关于“基于Python的七种经典排序算法”的完整攻略。 1. 排序算法简介 排序算法是一种将一组数据按照特定顺序排列的算法。在计算机科学中,常见的排序算法包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序和堆排序等。 2. Python实现七种经典排序算法 2.1泡排序 冒泡排序是一种通过交换相邻元素来排序的算法。在Python中,我们可以…

    python 2023年5月13日
    00
  • 多版本Python共存的配置方法

    下面是“多版本Python共存的配置方法”的完整攻略。 一、了解Python环境 在多版本Python共存的配置之前,首先需要了解Python环境。 Python官方网站提供了不同版本的Python下载链接,例如目前官网支持的Python版本为2.7.x和3.9.x,其中2.7.x系列是Python2版本,3.9.x系列是Python3版本。同时,Pytho…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部