Python基于百度API识别并提取图片中文字

下面是“Python基于百度API识别并提取图片中文字”的完整攻略,包含两个实际示例:

1. 准备工作

  • 首先需要安装Python,建议安装Python 3.x版本;
  • 安装Python包管理工具pip,一般Python安装包会自带pip;
  • 注册百度API账号并开通文字识别服务,获取API Key和Secret Key;
  • 安装Python中的requests,urllib等HTTP请求库,方便发送HTTP请求,处理响应等。

2. 代码实现

  • 在Python代码中处理图片,将图片转换成二进制格式的数据,发送HTTP请求到百度API,在返回的JSON响应结果中提取出识别到的文字。

以下是一个简单示例:

import requests

# 设置API Key和Secret Key
APP_ID = 'your app id'
API_KEY = 'your api key'
SECRET_KEY = 'your secret key'

# 设置图片路径
img_path = 'test.jpg'

# 读取图片的二进制数据
with open(img_path, 'rb') as f:
    image = f.read()

# 发送HTTP请求
response = requests.post('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' + access_token, headers=headers, data=image)

# 解析JSON响应
result = response.json()
if 'words_result' in result:
    for words in result['words_result']:
        print(words['words'])
else:
    print('No result')

在以上代码中,我们通过requests库发送了一个POST请求,将图片的二进制数据作为POST请求的data参数送到API服务端,同时设置HTTP请求头和参数,其中HTTP请求头里需要包含请求的API Key和Secret Key,参数中需要指定要使用的API接口,以上代码中我们使用了百度OCR文字识别中的general_basic接口。

3. 示例说明1:从截屏中提取文字

我们可以使用Python来截取屏幕中的内容,也可以处理硬盘中已有的图片文件。这里我提供一个从屏幕快照中提取文字的示例代码:

import sys
import io
import os
import time
from PIL import ImageGrab
import requests

def get_access_token():
    """
    获取API的access_token
    """
    api_key = 'your api key'
    secret_key = 'your secret key'
    url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + api_key + '&client_secret=' + secret_key
    res = requests.post(url)
    x = res.json()
    return x['access_token']


def capture_screen():
    """
    截屏
    """
    return ImageGrab.grabclipboard()


def get_text(access_token, img_bin):
    """
    获取图片文字
    """
    url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' + access_token
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    data = {'image': img_bin}
    res = requests.post(url, headers=headers, data=data)
    x = res.json()
    return x.get('words_result')[0]['words']


if __name__ == '__main__':
    access_token = get_access_token()
    img = capture_screen()
    buf = io.BytesIO()
    img.convert('RGB').save(buf, format='JPEG')
    img_bin = buf.getvalue()
    text = get_text(access_token, img_bin)
    print(text)

以上代码通过使用ImageGrab.grabclipboard()方法从剪贴板中获取屏幕快照,转换为JPEG格式二进制数据作为参数调用get_text()方法,获取图片中的文字。

4. 示例说明2:批量识别图片

如果我们需要处理一个包含多张图片的文件夹,可以使用Python的os库和PIL库来批量读取图片,实现自动识别图片中的文字。以下是示例代码:

import os
import requests
from PIL import Image

def get_access_token():
    """
    获取API的access_token
    """
    api_key = 'your api key'
    secret_key = 'your secret key'
    url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + api_key + '&client_secret=' + secret_key
    res = requests.post(url)
    x = res.json()
    return x['access_token']


def get_text(access_token, img_bin):
    """
    获取图片文字
    """
    url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' + access_token
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    data = {'image': img_bin}
    res = requests.post(url, headers=headers, data=data)
    x = res.json()
    return x.get('words_result')[0]['words']

if __name__ == '__main__':
    access_token = get_access_token()
    img_dir = 'image_dir'
    for filename in os.listdir(img_dir):
        img_path = os.path.join(img_dir, filename)
        with open(img_path, 'rb') as f:
            img = Image.open(f)
            img_bin = f.read()
            text = get_text(access_token, img_bin)
            print('{}: {}'.format(filename, text))

以上代码中,我们通过os.listdir()方法获取包含多张图片的文件夹中所有的图片文件名,然后使用Image.open()方法打开每一个图片文件,将二进制数据作为参数调用get_text()方法,获取图片中的文字,最后打印出图片文件名和提取出的文字。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基于百度API识别并提取图片中文字 - Python技术站

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

相关文章

  • python搭建简易服务器分析与实现

    下面开始讲解“Python搭建简易服务器分析与实现”的完整攻略。 准备工作 在进行Python搭建简易服务器之前,我们需要进行以下准备工作:1. 了解TCP/IP协议;2. 学习Python socket编程;3. 安装Python环境。 实现过程 导入socket模块 import socket 创建socket对象 server_socket = soc…

    python 2023年6月6日
    00
  • Python字符串查找基本操作代码案例

    下面是关于“Python字符串查找基本操作代码案例”的完整攻略: 1. 概述 在Python中,字符串(String)是一种非常常见的数据类型。而在实际编程过程中,我们往往需要查找一个字符串中是否包含某个特定的子串,或者查找某个字符在字符串中的出现位置等。本篇文章将介绍Python字符串查找基本操作的代码案例。 2. 查找特定子串 2.1 方法一 ———— …

    python 2023年5月31日
    00
  • Python 异步之如何获取当前和正在运行任务详解

    Python 异步之获取当前和正在运行任务详解 在 Python 异步编程中,我们经常需要获取当前的任务以及正在运行的任务。本文将介绍如何使用 asyncio 模块和相关方法来获取这些信息。 获取当前任务 要获取当前的任务,我们可以使用 asyncio.current_task() 方法。该方法返回当前协程对象的 Task 实例。在异步中,Task 是 as…

    python 2023年5月14日
    00
  • 解决Windows下python和pip命令无法使用的问题

    解决Windows下python和pip命令无法使用的问题 在Windows系统中,有时候我们会遇到无法使用python和pip命令的问题。本文将详细讲解如何解决Windows下python和pip命令无法使用的问题,包括环境变量的设置和两个示例。 环境变量设置 在Windows系统中,我们需要将Python和pip的路径添加到系统环境变量中,才能在任何位置…

    python 2023年5月13日
    00
  • python包和文件夹有的区别点总结

    当我们开始学习Python编程时,我们通常要引入一些外部的库或者模块来协助我们完成任务。这些库或者模块被组织成了一种特殊的叫做包(Package)的结构。包是一种封装了多个模块或者子包的目录结构。与包相似的还有文件夹,那么Python包和文件夹之间有哪些区别呢?本文就为大家总结一下。 1. 包是有特殊的__init__.py文件 与普通的文件夹相比,Pyth…

    python 2023年6月3日
    00
  • python3实现短网址和数字相互转换的方法

    下面是“Python3实现短网址和数字相互转换的方法”的完整攻略: 安装shortuuid库 在Python3中,我们可以用shortuuid库来实现短网址和数字之间的相互转换。在开始之前,我们需要先安装shortuuid库。在终端中输入以下命令安装: pip install shortuuid 进行短地址生成或数字转换 短地址生成 方法一:使用shortu…

    python 2023年6月3日
    00
  • Python语音合成之第三方库gTTs/pyttsx3/speech横评(内附使用方法)

    Python语音合成之第三方库gTTs/pyttsx3/speech横评(内附使用方法) 1. gTTs gTTs是一个Python库,通过Google的文本到语音(TTS) API将文本转换为声音。使用简单,支持多种语言,输出结果是MP3格式。 安装 pip install gTTS 使用 from gtts import gTTS import os #…

    python 2023年5月19日
    00
  • 用python制作词云视频详解

    用Python制作词云视频详解 词云是一种可视化技术,用于展示文本数据中出现频率较高的单词。Python中有许多第三方库可以用于制作词云,例如wordcloud、jieba等。本文将详细讲解如何用Python制作词云,包括如何安装和使用第三方库、如何读取文本数据、如何生成词云等。 安装和使用第三方库 首先,我们需要安装和使用第三方库。以下是一个示例,演示如何…

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