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打包exe时各种异常处理方案总结

    由于这个题目比较长,请允许我分步解释。 Python打包exe时各种异常处理方案总结 为什么要打包exe? 在Python中,我们编写好了程序后,可以直接使用Python解释器运行程序,即用python your_program.py来运行程序。但是,这种方式只适用于开发阶段,不能方便地将程序分享给其他人使用。为了使我们的程序更方便地分享给其他人使用,我们通…

    python 2023年5月13日
    00
  • Python中CSV文件(逗号分割)实战操作指南

    下面是“Python中CSV文件(逗号分割)实战操作指南”的完整攻略: 什么是CSV文件? CSV(Comma Separated Values)文件是一种普遍的电子表格或数据库中存储数据的格式。CSV文件通常以逗号分隔,每行表示一个数据行,每列表示数据的不同属性。文件可以在电子表格程序(如Microsoft Excel)或文本编辑器中打开。 读取CSV文件…

    python 2023年5月20日
    00
  • python scrapy框架中Request对象和Response对象的介绍

    以下是关于“Python Scrapy 框架中 Request 对象和 Response 对象的介绍”的完整攻略: Python Scrapy 框架中 Request 对象和 Response 对象的介绍 在 Scrapy 框架中,Request 对象和 Response 对象是非常重要的概念。Request 对象用于发送 HTTP 请求,而 Respons…

    python 2023年5月15日
    00
  • Python语言实现百度语音识别API的使用实例

    Python语言实现百度语音识别API的使用实例 简介 百度语音识别API是一种可以实现将语音转换成文字的工具,它可以帮助我们解决语音转文本的问题。在这个攻略中,我们将详细介绍如何使用Python语言实现百度语音识别API的使用,并提供两个示例说明,帮助大家更好地理解API的使用方法。 准备条件 在开始使用API之前,我们需要先进行一些准备工作: 首先,我们…

    python 2023年5月19日
    00
  • python tkinter实现连连看游戏

    “Python tkinter实现连连看游戏” 的攻略共分为以下几部分: 实现窗口和界面设计 加载游戏图片 写连连看算法实现图片消除 添加游戏音效和时间限制 构建游戏主循环以及检测游戏结束 接下来将针对每一步内容进行详细讲解。 一、实现窗口和界面设计首先,我们需要导入 tkinter 模块,并创建一个窗口,设置窗口的标题,大小和背景颜色等。 import t…

    python 2023年6月13日
    00
  • 简要讲解Python编程中线程的创建与锁的使用

    Python线程创建 在Python中,创建线程有两种方式:直接创建Thread对象和继承Thread类创建线程。 直接创建Thread对象: import threading def func(): print("Hello, World!") if __name__ == "__main__": t = threa…

    python 2023年5月19日
    00
  • Redis 如何实现订阅/发布模式(pub/sub)?

    当多个客户端需要实时接收某个频道的消息时,Redis 提供了订阅/发布模式(pub/sub)来实现这个功能。本文将详细讲解 Redis 如何实现订阅/发布模式,包括实现原理和使用攻略。 Redis 订阅/发布模式的实现原理 Redis 订阅/发布模式的实现原理主要包括以下几个方面: 订阅:客户端向 Redis 发送订阅请求,Redis 将请求作为一个 key…

    python 2023年5月12日
    00
  • python虚拟环境完美部署教程

    Python虚拟环境完美部署教程 在 Python 应用程序开发中,为了让不同的项目之间互不干扰,我们经常需要使用 Python 虚拟环境。虚拟环境能够在本地模拟出一个独立的空间,可以安装不同版本的 Python、各种第三方模块等等。本教程将详细介绍如何使用 Python 的虚拟环境来进行项目开发。 安装虚拟环境工具 – virtualenv 使用 Pyth…

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