以下是 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 文件中。具体步骤如下:
- 将需要识别的图片放入名为
image_dir
的文件夹中; - 新建一个 Python 文件,并将上文中的代码复制进去;
- 修改代码中的路径参数,将图片文件夹路径及输出 Excel 文件路径修改为自己的实际路径;
- 运行 Python 文件,等待文字识别及 Excel 文件生成。
通过上述步骤,我们可以实现批量识别图片文字并保存至 Excel 文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现批量识别图片文字并存为Excel - Python技术站