🌈个人主页:易辰君-CSDN博客
🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12813012.html
目录
前言
一、安装依赖
二、下载安装chi_sim.traineddata文件
三、代码示例
前言
要编写一个提取图片内容的 Python 程序,可以使用 OCR(光学字符识别)技术。常用的库是 pytesseract
,它结合了 Tesseract
OCR 引擎。本次需求是使用python程序读取指定文件夹中的图片,提取图片中的文字内容,并且将提取的内容生成txt档案,txt档案与识别的图片单独放在一个文件夹中。由于图片中的内容是中文,还需要下载安装chi_sim.traineddata文件
一、安装依赖
首先,你需要安装 pytesseract
和 Pillow
这两个库。
pip install pytesseract Pillow
另外,还需要安装 Tesseract OCR 引擎:
- 对于 Windows,你可以从 这里 下载并安装 Tesseract。
- 对于 Ubuntu,可以通过以下命令安装:
sudo apt-get install tesseract-ocr
二、下载安装chi_sim.traineddata文件
(一)下载并安装 chi_sim.traineddata
文件
首先,确保已经下载并安装了中文的语言包 chi_sim.traineddata
文件。你可以从 Tesseract 语言包 页面下载语言文件:
-
下载
chi_sim.traineddata
文件:下载链接
(二)将 chi_sim.traineddata
文件放到正确的目录
找到 Tesseract
的安装目录,通常路径为:
-
Windows:
C:\Program Files\Tesseract-OCR\tessdata\
-
Ubuntu:
/usr/share/tesseract-ocr/4.00/tessdata/
将下载的 chi_sim.traineddata
文件放入该目录下的 tessdata
文件夹中。
(三)设置 TESSDATA_PREFIX
环境变量
你需要设置环境变量 TESSDATA_PREFIX
,指向 tessdata
目录。以下是如何设置该环境变量的步骤:
Windows 系统:
-
打开“控制面板” -> “系统和安全” -> “系统”。
-
点击左侧的“高级系统设置”,然后点击“环境变量”。
-
在“系统变量”部分,点击“新建”,然后创建一个新的变量:
-
变量名:
TESSDATA_PREFIX
-
变量值:
C:\Program Files\Tesseract-OCR\
(此路径为你安装 Tesseract 的路径,请根据实际情况修改)
注意:不要将路径设置为
tessdata
,而是 Tesseract 安装目录。 -
-
确保这个路径是
tessdata
文件夹的上一级目录。
Ubuntu 系统:
在终端中,打开 .bashrc
文件并添加环境变量:
export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/
然后运行以下命令使其生效:
source ~/.bashrc
三、代码示例
import os
from PIL import Image
import pytesseract
import shutil# 指定 tesseract.exe 的完整路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'def extract_text_from_image(image_path):"""从图片中提取文本"""img = Image.open(image_path)text = pytesseract.image_to_string(img, lang='chi_sim') # 使用简体中文return textdef process_images_in_folder(source_folder_path):"""处理文件夹中的所有图片,每张图片单独创建一个文件夹存储txt文件和图片"""# 遍历源文件夹中的所有图片文件for filename in os.listdir(source_folder_path):# 只处理图片文件if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.tiff', '.tif')):image_path = os.path.join(source_folder_path, filename)# 提取图片中的文字text = extract_text_from_image(image_path)# 创建以图片名称命名的文件夹folder_name = os.path.splitext(filename)[0] # 使用文件名(无扩展名)作为文件夹名folder_path = os.path.join(source_folder_path, folder_name)if not os.path.exists(folder_path):os.makedirs(folder_path)# 生成txt文件路径txt_filename = folder_name + ".txt"txt_path = os.path.join(folder_path, txt_filename)# 将提取的文字写入到txt文件with open(txt_path, "w", encoding="utf-8") as txt_file:txt_file.write(text)# 将图片复制到同一个文件夹中new_image_path = os.path.join(folder_path, filename)shutil.copy2(image_path, new_image_path)print(f"图片和txt文件已保存到: {folder_path}")if __name__ == "__main__":# 设置包含图片的文件夹路径source_folder_path = r"F:\程序员编程之路\图灵课堂\PythonProject\4.需求\2.提取图片中的文字\image_directory" # 替换为存放图片的文件夹路径# 处理文件夹中的所有图片process_images_in_folder(source_folder_path)