Python实现批量识别图片文字并存为Excel

以下是 Python 实现批量识别图片文字并存为 Excel 的完整攻略。

1. 前置条件

在开始本攻略之前,请确保您已经安装了以下环境和库:

  • Python 3.x
  • Tesseract OCR 引擎
  • Pillow 库
  • Pytesseract 库
  • OpenCV 库
  • Pandas 库

2. 构建识别图片的 Python 环境

安装 Tesseract OCR 引擎

Tesseract OCR 是一个优秀的开源 OCR 引擎,能够识别多种语言的文字。您可以从 官方网站 上下载 Tesseract OCR 引擎,并按照说明进行安装。

安装 Pillow 库

Pillow 是 Python 中一个处理图片的库,能够打开、显示、保存图片等。您可以通过以下命令进行安装:

pip install Pillow

安装 Pytesseract 库

Pytesseract 是一个 Python 封装的 Tesseract OCR 的库,能够在 Python 中实现文字识别。您可以通过以下命令进行安装:

pip install pytesseract

安装 OpenCV 库

OpenCV 是一个计算机视觉库,能够对图片进行处理、分析等,提取出图片中的特征信息。您可以通过以下命令进行安装:

pip install opencv-python

安装 Pandas 库

Pandas 是 Python 中一个数据分析的库,能够对数据进行清洗、整理、分析等。您可以通过以下命令进行安装:

pip install pandas

3. 实现批量识别图片文字并存为 Excel

以下是实现批量识别图片文字并存为 Excel 的代码实现。

import os
import cv2
import pytesseract
import pandas as pd
from PIL import Image

# 设置 Tesseract OCR 引擎路径
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# 定义函数 batch_ocr,实现图片文字识别及保存
def batch_ocr(input_dir, output_file):
    # 遍历图片文件夹中的所有文件
    file_list = os.listdir(input_dir)
    data_list = []
    for filename in file_list:
        if filename.endswith('.jpg') or filename.endswith('.png'):
            # 读取图片
            image = Image.open(os.path.join(input_dir, filename))
            # 将图片转换为灰度模式
            img_gray = image.convert('L')
            # 将灰度图片转换为 OpenCV 格式
            img_opencv = cv2.cvtColor(numpy.array(img_gray), cv2.COLOR_RGB2BGR)
            # 对图片进行二值化处理
            img_binary = cv2.threshold(img_opencv, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
            # 将 OpenCV 图片转换为 PIL 图片
            img_pil = Image.fromarray(cv2.cvtColor(img_binary, cv2.COLOR_BGR2RGB))
            # 使用 Tesseract OCR 引擎进行文字识别
            result = pytesseract.image_to_string(img_pil, lang='eng')
            # 将识别结果存入数据列表
            data_list.append([filename, result])
    # 将数据列表转换为 Pandas 数据框
    df = pd.DataFrame(data_list, columns=['filename', 'ocr_result'])
    # 将数据框保存为 Excel 文件
    df.to_excel(output_file, index=False)

# 调用函数 batch_ocr,传入图片文件夹及输出 Excel 文件路径
batch_ocr('image_dir', 'output_file.xlsx')

4. 示例说明

案例一:如何识别单张图片的文字?

假设我们有一张名为 example.jpg 的图片,需要对其中的文字进行识别。

首先,我们可以使用以下代码读取并显示该张图片:

from PIL import Image

image = Image.open('example.jpg')
image.show()

然后,我们使用以下代码将该图片转换为灰度模式:

img_gray = image.convert('L')
img_gray.show()

接着,我们使用以下代码将灰度图片转换为 OpenCV 格式:

import cv2
import numpy

img_opencv = cv2.cvtColor(numpy.array(img_gray), cv2.COLOR_RGB2BGR)
cv2.imshow('img_opencv', img_opencv)
cv2.waitKey(0)

最后,我们使用以下代码将 OpenCV 图片进行二值化处理,并使用 Tesseract OCR 引擎进行文字识别:

import pytesseract

# 设置 Tesseract OCR 引擎路径
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

# 将 OpenCV 图片进行二值化处理
img_binary = cv2.threshold(img_opencv, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

# 将二值化后的 OpenCV 图片转换为 PIL 图片,并使用 Tesseract OCR 引擎进行文字识别
img_pil = Image.fromarray(cv2.cvtColor(img_binary, cv2.COLOR_BGR2RGB))
result = pytesseract.image_to_string(img_pil, lang='eng')

print(result)

通过上述代码,我们可以得到该图片中的文字识别结果。

案例二:如何批量识别图片文字并保存至 Excel 文件中?

我们可以使用上文中的代码实现批量识别图片文字并保存至 Excel 文件中。具体步骤如下:

  1. 将需要识别的图片放入名为 image_dir 的文件夹中;
  2. 新建一个 Python 文件,并将上文中的代码复制进去;
  3. 修改代码中的路径参数,将图片文件夹路径及输出 Excel 文件路径修改为自己的实际路径;
  4. 运行 Python 文件,等待文字识别及 Excel 文件生成。

通过上述步骤,我们可以实现批量识别图片文字并保存至 Excel 文件中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现批量识别图片文字并存为Excel - Python技术站

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

相关文章

  • Python实例练习逆序输出字符串讲解

    Python实例练习中逆序输出字符串,是一个比较基础的字符串反转问题,可以通过多种方法实现,下面就来一一介绍。 方法一:切片反转 python中字符串类型是一种可迭代的数据类型,我们可以通过切片(slice)来反转字符串。代码如下: string = "hello world" reversed_string = string[::-1]…

    python 2023年6月5日
    00
  • Python实现Logger打印功能的方法详解

    Python实现Logger打印功能的方法详解 Logger是Python自带的logging模块提供的一个用于日志记录的工具。它提供了多种方式来记录和输出日志信息,使得在应用程序中添加日志功能变得简单方便。在此文档中,我们将详细讲解如何使用Logger实现打印日志信息的功能。 一、Logger的基本概念 在使用Logger之前,我们需要了解以下几个基本概念…

    python 2023年6月5日
    00
  • python制作机器人的实现方法

    Python是一种功能强大的编程语言,可以用于制作机器人。本文将详细讲解如何使用Python制作机器人,包括两种实现方法:使用第三方库、使用自然语言处理。 使用第三方库 要使用第三方库制作机器人,我们可以使用Python中的chatterbot库。以下是一个示例,演示如何使用chatterbot库制作机器人: from chatterbot import C…

    python 2023年5月15日
    00
  • python开发之for循环操作实例详解

    当然,我很乐意为您提供“Python开发之for循环操作实例详解”的完整攻略。以下是详细的步骤和示例: Python开发之for循环操作实例详解 在Python中,for循环是一种常用的循环结构,用于遍历可迭代对象中的元素。for循环的语法格式如下: for 变量 in 可迭代对象: 循环体 其中,变量是用于存储可迭代对象中的元素变量名,可迭代对象是一个包含…

    python 2023年5月13日
    00
  • Python函数高级(命名空间、作用域、装饰器)

    Python函数高级(命名空间、作用域、装饰器) 命名空间 在Python中每个函数、类、模块都有自己的命名空间,这个空间负责保存这个东西创建的变量名和对应的对象。当Python解释器执行某个函数或者类时,会自动创建一个与函数或类相对应的命名空间。 局部命名空间 在函数内部声明的变量,只在函数内部有效,也就是说,在函数外部是访问不到的。 def f(): a…

    python 2023年6月3日
    00
  • python 梯度法求解函数极值的实例

    Python 梯度法求解函数极值的实例主要包括以下几个步骤: 定义要求极值的函数 首先需要定义一个要求极值的函数,以本例为例,我们选用的函数是 Rosenbrock 函数,其公式为: $$ f(x,y) = (1 – x) ^ 2 + 100(y – x^2) ^ 2 $$ 其中,变量 x 和 y 是自变量,函数值是因变量。 代码如下: def rosenb…

    python 2023年6月3日
    00
  • Python 运行一个它不应该运行的 if-case!

    【问题标题】:Python runs a if-case that it should not!Python 运行一个它不应该运行的 if-case! 【发布时间】:2023-04-03 19:06:01 【问题描述】: 我有这个代码: def random_answerlist(self): self.li = [] self.winning_button…

    Python开发 2023年4月8日
    00
  • Python语法之精妙的十个知识点(装B语法)

    这里是完整攻略。 Python语法之精妙的十个知识点(装B语法) 1. 列表生成式(List Comprehensions) 列表生成式是用来快速生成一个列表的简洁语法。它的基本形式是:[expression for item in iterable]。其中 expression 是一个任意的 Python 表达式,item 是可迭代对象 iterable …

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