提取图片内容的 Python 程序

ops/2024/10/22 13:11:53/

  🌈个人主页:易辰君-CSDN博客
🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12813012.html

目录

前言

一、安装依赖

二、下载安装chi_sim.traineddata文件

三、代码示例


前言

要编写一个提取图片内容的 Python 程序,可以使用 OCR(光学字符识别)技术。常用的库是 pytesseract,它结合了 Tesseract OCR 引擎。本次需求是使用python程序读取指定文件夹中的图片,提取图片中的文字内容,并且将提取的内容生成txt档案,txt档案与识别的图片单独放在一个文件夹中。由于图片中的内容是中文,还需要下载安装chi_sim.traineddata文件


一、安装依赖

首先,你需要安装 pytesseractPillow 这两个库。

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 系统:

  1. 打开“控制面板” -> “系统和安全” -> “系统”。

  2. 点击左侧的“高级系统设置”,然后点击“环境变量”。

  3. 在“系统变量”部分,点击“新建”,然后创建一个新的变量:

    • 变量名:TESSDATA_PREFIX

    • 变量值:C:\Program Files\Tesseract-OCR\ (此路径为你安装 Tesseract 的路径,请根据实际情况修改)

    注意:不要将路径设置为 tessdata,而是 Tesseract 安装目录。

  4. 确保这个路径是 tessdata 文件夹的上一级目录。

Ubuntu 系统:

在终端中,打开 .bashrc 文件并添加环境变量:

export TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/

然后运行以下命令使其生效:

source ~/.bashrc

三、代码示例

python">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)


http://www.ppmy.cn/ops/127575.html

相关文章

标题:民峰金融科技:创新科技引领金融投资新时代

民峰金融科技凭借其领先的技术与专业的金融服务,正不断为全球投资者提供智能化的财富管理解决方案。依托大数据、人工智能等前沿科技,民峰金融科技帮助投资者实现资产增值与风险控制,成为全球金融科技领域的重要力量。 一、智能分析&#xf…

AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】

Mac分享吧 文章目录 AlDente Pro for Mac 充电限制保护工具 安装完成,软件打开效果一、AlDente Pro for Mac 充电限制保护工具 Mac电脑版——v1.28.41️⃣:下载软件2️⃣:安装软件,将安装包从左侧拖入右侧文件夹中,等…

【分布式技术】中间件-zookeeper安装配置

文章目录 安装部署1. 安装ZooKeeper2. 配置ZooKeeper3. 启动ZooKeeper服务器4. 使用ZooKeeper命令行客户端5. 使用ZooKeeper的四个基本操作6. ZooKeeper集群模式7. 安全和权限8. 监控和日志 相关文献 安装部署 在Linux环境中操作ZooKeeper通常涉及以下几个方面: 1…

浙大数据结构:11-散列3 QQ帐户的申请与登陆

哈希表应用使用map&#xff0c;所以写起来并不难 1、主函数 感觉有点像map的简单应用&#xff0c;把所有条件都进行处理判断就行 #include <iostream> #include<string> #include<unordered_map> #include<algorithm> using namespace std; #define…

Lambda 表达式

Lambda 表达式是 C11 引入的一种匿名函数的方式&#xff0c;它允许你在需要函数的地方内联地定义函数&#xff0c;而无需单独命名函数 [capture clause](parameters) -> return_type {// 函数体 // 可以使用捕获列表中的变量 return expression; // 可选的返回语句 } 捕获…

mysql5.7.30绿色版安装

下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) 参考&#xff1a;【绿色版】Mysql下载、安装、配置与使用&#xff08;保姆级教程&#xff09;_mysql 绿色安装-CSDN博客 从下载地址中下载mysql&#xff0c;解压zip安装包&#xff0c;到想…

nginx中的HTTP 负载均衡

HTTP 负载均衡&#xff1a;如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上&#xff0c;我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡&#xff1a; upstr…

云服务器磁盘满了,清理docker无用缓存、容器等清理

docker system prune 命令用于清理 Docker 系统中的各种未使用资源。根据你提供的警告信息&#xff0c;这条命令将会移除以下内容&#xff1a; 所有已停止的容器&#xff08;all stopped containers&#xff09; 所有未被至少一个容器使用的网络&#xff08;all networks no…