python 3调用百度OCR API实现剪贴板文字识别

2023-12-16Python编程
39

Python 3调用百度OCR API实现剪贴板文字识别

本文介绍如何使用Python 3调用百度OCR API实现剪贴板文字识别,同时提供了2个示例来展示如何调用OCR API以及如何通过Python将识别结果保存到文本文件。

前置条件

在使用本文提供的代码之前,您需要先完成以下事项:

  • 注册百度OCR API并获取相应的API Key和Secret Key
  • 安装Python 3.x环境以及相应的依赖库(如requests, Pillow等)

OCR API简介

百度OCR API是一款文本识别服务,可以识别图片中的文字。其使用过程如下:

  • 将待识别的图片文件通过请求发送到百度服务器
  • 百度服务器返回识别结果

调用OCR API

下面我们介绍如何通过Python 3调用OCR API。

import requests
from PIL import Image
from io import BytesIO

appkey = 'your appkey'
secretkey = 'your secretkey'
api_endpoint = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic'

def ocr(file_path):
    '''
    使用OCR API识别图片中的文字
    :param file_path: 图片文件路径
    :return: 识别结果(str)
    '''
    with open(file_path, 'rb') as fp:
        img = Image.open(fp)
        # 将图片转换为RGB格式
        img = img.convert('RGB')
        # 将图片转换为Bytes数据
        output_buffer = BytesIO()
        img.save(output_buffer, format='JPEG')
        binary_data = output_buffer.getvalue()

    # 设置请求头
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded'
    }

    # 设置请求参数
    data = {
        'image': binary_data,
        'access_token': access_token
    }

    response = requests.post(api_endpoint, headers=headers, data=data)
    if response.status_code == 200:
        result = response.json()
        if 'words_result' in result and len(result['words_result']) > 0:
            return '\n'.join([r['words'] for r in result['words_result']])
    return ''

上述代码首先将图片文件转换为Bytes数据,然后将其通过POST请求发送到OCR API接口,接口返回的结果为JSON格式字符串,其中包含了识别结果。

示例1:从剪贴板中读取图片并识别

下面提供一个示例,展示如何从剪贴板中读取图片并进行文字识别。需要先安装pyperclip库。

import pyperclip
from PIL import ImageGrab
import os

file_name = 'temp.jpg'
clipboard_image = ImageGrab.grabclipboard()

if clipboard_image:
    clipboard_image.save(file_name, 'JPEG')
    result = ocr(file_name)
    os.remove(file_name)
    if result:
        pyperclip.copy(result)
        print('识别结果已复制到粘贴板:\n{}'.format(result))

上述代码首先使用ImageGrab.grabclipboard()从剪贴板中获取图片,然后调用ocr函数进行识别。最后,将识别结果复制到粘贴板中,并输出识别结果。

示例2:批量识别图片并保存到文本文件

下面提供一个示例,展示如何批量识别图片,并将识别结果保存到文本文件中。

import os

input_dir = 'input'
output_dir = 'output'

if not os.path.exists(output_dir):
    os.mkdir(output_dir)

for file_name in os.listdir(input_dir):
    if file_name.endswith('.jpg') or file_name.endswith('.png'):
        input_file_path = os.path.join(input_dir, file_name)
        output_file_path = os.path.join(output_dir, file_name + '.txt')
        result = ocr(input_file_path)
        with open(output_file_path, 'w', encoding='utf-8') as fp:
            fp.write(result)
            print('{} 识别成功'.format(file_name))

上述代码首先读取指定目录下的所有图片文件,然后依次进行识别,并将识别结果保存到文本文件中。

总结

本文介绍了如何使用Python 3调用百度OCR API进行文字识别,并提供了两个示例来展示如何调用OCR API以及如何通过Python将识别结果保存到文本文件。

The End

相关推荐

解析Python中的eval()、exec()及其相关函数
Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。...
2023-12-18 Python编程
117

Python下载网络文本数据到本地内存的四种实现方法示例
在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。...
2023-12-18 Python编程
101

Python 二进制字节流数据的读取操作(bytes与bitstring)
来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。...
2023-12-18 Python编程
120

Python3.0与2.X版本的区别实例分析
Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。...
2023-12-18 Python编程
34

python如何在终端里面显示一张图片
要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:...
2023-12-18 Python编程
91

Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:...
2023-12-18 Python编程
103