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

yizhihongxing

一、前言

随着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 爬虫使用动态切换ip防止封杀

    下面就是 Python 爬虫使用动态切换 IP 防止封杀的完整攻略。 1. IP 封禁的原因 在进行爬虫开发的过程中,我们经常会遇到 IP 被封禁的情况。这是因为大多数网站为了防止爬虫大规模地访问,会对频繁访问的 IP 或者请求进行限制。这时候我们需要使用代理 IP 进行访问,才能有效地防止 IP 被封禁。 2. 动态切换 IP 的方法 2.1 使用代理 I…

    python 2023年6月3日
    00
  • 几款好用的python工具库(小结)

    接下来让我来详细讲解一下“几款好用的Python工具库(小结)”的攻略。 一、前言 Python是一门广泛应用于编程开发、数据处理、人工智能等领域的动态语言,因其简洁易学、方便高效的特性,逐渐被越来越多的人所熟悉和喜爱。而在Python编程中,工具库是一个不可或缺的组成部分,它可以帮助我们大大提高开发效率,让我们的程序更加健壮、高效。 在这篇文章中,我将为大…

    python 2023年5月14日
    00
  • 详解Python PIL ImageDraw.Draw.polygon()方法

    Python PIL库(Python Imaging Library)是Python语言的一个图像处理软件包,提供了许多用于图像处理的工具和函数。其中的ImageDraw模块提供了绘制各种形状的函数和方法,如polygon()、line()等。在本文中,我们将详细讲解ImageDraw.Draw.polygon()方法。 1. polygon()介绍 Ima…

    python-answer 2023年3月25日
    00
  • 对python 读取线的shp文件实例详解

    当我们需要从shp文件中读取线(Polyline)时,可以使用Python中的shapefile模块。下面是一份读取shp文件中线的完整攻略,包含了两个示例说明。 安装shapefile 在使用shapefile模块之前,需要先安装它。可以使用pip命令进行安装,如下所示: pip install pyshp 导入模块 安装完成之后,需要导入shapefil…

    python 2023年6月5日
    00
  • Python之parser.add_argument解读

    Python中的argparse模块是用于解析命令行参数和选项的标准模块。add_argument方法是argparse.ArgumentParser类中的一个方法,用于向该类中添加命令行选项和参数。 1. add_argument方法的基本用法 add_argument方法的基本用法如下: parser.add_argument(‘name’, actio…

    python 2023年6月3日
    00
  • Python字符串的encode与decode研究心得乱码问题解决方法

    Python字符串的encode与decode研究心得乱码问题解决方法 背景 在Python中,字符串的编码类型有很多种,如utf-8、gbk、gb2312、ascii等等。不同的编码类型会导致字符串无法正确解析,即出现乱码。 解决乱码问题的方法之一就是使用字符串的encode和decode方法。这两个方法可以将字符串在不同的编码类型之间进行转换,从而解决乱…

    python 2023年5月20日
    00
  • Python中关于列表的常规操作范例以及介绍

    Python中关于列表的常规操作 在Python编程中,列表是一种常用的数据类型,用于表示一个有序的、可变的序列。Python提供了多种方法来操作列表,包括添加删除、修改、排序等。下面将详细介绍Python中关于列表常规操作,包括语法、参数、返回值以及示例说明。 列表的创建 在Python中,我们可以使用方括号[]来创建一个列表。下面是一个示例,演示了如何创…

    python 2023年5月13日
    00
  • Python Matplotlib简易教程(小白教程)

    下面我就来详细讲解“Python Matplotlib简易教程(小白教程)”的完整攻略。 一、Matplotlib介绍 Matplotlib是基于Python语言的开源数据可视化工具库,在数据可视化领域应用广泛。它可以创建多种类型的可视化图形,例如折线图、散点图、柱状图、饼图、等高线图等等。 二、安装Matplotlib 使用pip可以轻松安装Matplot…

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