python提取图片中的文字写入excel文件,并打包为exe可执行文件

news2024/10/7 20:34:54

python提取图片数据写入excel,并打包为exe可执行文件

    • 1. 以下面的图片为例
    • 2. python环境需要的依赖包
    • 3. 创建交互式窗口
    • 4. 读取文件夹下的所有文件并提取数据
    • 5. 提取图片中字段的代码
    • 6. 打包代码为exe可执行文件
      • 安装打包依赖文件
      • 运行打包代码

1. 以下面的图片为例

在这里插入图片描述

2. python环境需要的依赖包

import os
import re
import pytesseract
from tkinter import Tk, filedialog
from PIL import Image, ImageOps
import pandas as pd

3. 创建交互式窗口

# 创建Tkinter窗口
root = Tk()
root.withdraw()  # 隐藏主窗口

# 弹出选择文件夹对话框
folder_path = filedialog.askdirectory(title='选择图片文件夹')

4. 读取文件夹下的所有文件并提取数据

# 弹出选择文件夹对话框
folder_path = filedialog.askdirectory(title='选择图片文件夹')
# 配置Tesseract路径,如果已配置环境变量则可以省略这步
pytesseract.pytesseract.tesseract_cmd = r'D:\toolsoft\tesseractocr\tesseract.exe'
# 创建一个字典来存储数据
data = {
    'file name': [],
    'CBF<30% volume': [],
    'Tmax>6.0s volume': [],
    'Mismatch volume': [],
    'Mismatch ratio': []
}
# 如果用户取消选择,返回空路径
if not folder_path:
    print('未选择文件夹。')
else:
    print(f'选择的文件夹路径为:{folder_path}')

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):
            # 检查文件是否为图片文件(可以根据实际需求扩展这个条件)
            if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
                # 打开图片
                try:
                    image = Image.open(file_path)
                    # 处理图片,例如显示、保存或进行其他操作
                    data = from_fig_get_txt(data, image)
                    data['file name'].append(f"{filename}")
                    # 例如,显示图片
                    # image.show()
                    # 或者进行其他处理,如图像处理、识别等
                    # 这里可以添加你的其他代码逻辑
                except OSError:
                    print(f'无法打开文件:{file_path}')

    # 使用pandas将数据写入Excel
    df = pd.DataFrame(data)
    df.to_excel('output.xlsx', index=False)
    print('提取完成并已写入output.xlsx文件。')

5. 提取图片中字段的代码

def from_fig_get_txt(data, image):
    # 将彩色图像转换为灰度图像
    gray_image = ImageOps.grayscale(image)
    # 使用pytesseract提取图片中的文字
    text = pytesseract.image_to_string(gray_image, lang='eng')  # chi_sim使用简体中文,'eng'用于英文

    # 将提取的文字按要求分割或处理
    lines = text.split('\n')

    for i, line in enumerate(lines):
        if 'CBF<30% volume' in line.strip():  # 跳过空行
            # 使用正则表达式进行匹配
            # 匹配CBF后面的数据
            cbf_match = re.search(r'CBF<(\d+%) volume:\s*(\S+)\s*ml', line)
            if cbf_match:
                # cbf_percent = cbf_match.group(1)  # 提取CBF的百分比
                cbf_volume = cbf_match.group(2)  # 提取CBF的体积
                # print(f"CBF百分比: {cbf_percent}, CBF体积: {cbf_volume} ml")
                data['CBF<30% volume'].append(f"{cbf_volume} ml")

        if 'Tmax>6.0s volume' in line.strip():  # 跳过空行
            # 匹配Tmax后面的数据
            tmax_match = re.search(r'Tmax>([\d.]+)s.*?volume:\s*([\d.]+)\s*ml', line)
            if tmax_match:
                # tmax_value = tmax_match.group(1)  # 提取Tmax的数值
                tmax_volume = tmax_match.group(2)  # 提取Tmax的体积
                # print(f"Tmax数值: {tmax_value} s, Tmax体积: {tmax_volume} ml")
                data['Tmax>6.0s volume'].append(f"{tmax_volume} ml")

        if 'Mismatch volume' in line.strip():  # 跳过空行
            # 匹配Mismatch后面的数据
            Mis_match = re.search(r':\s*(.*)$', line)
            Mis_volume = Mis_match.group(1)  # 提取Tmax的体积
            # print(f"Tmax数值: {tmax_value} s, Tmax体积: {tmax_volume} ml")
            data['Mismatch volume'].append(f"{Mis_volume}")

        if 'Mismatch ratio' in line.strip():  # 跳过空行
            # 匹配Mismatch后面的数据
            Mis_ratio = re.search(r':\s*(.*)$', line)
            Mis_ratio = Mis_ratio.group(1)  # 提取Tmax的体积
            # print(f"Tmax数值: {tmax_value} s, Tmax体积: {tmax_volume} ml")
            data['Mismatch ratio'].append(f"{Mis_ratio}")

    return data

6. 打包代码为exe可执行文件

安装打包依赖文件

pip install pyinstaller

运行打包代码

pyinstaller --onefile yourpyfile.py

生成的 EXE 文件将在 dist 文件夹中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据------JavaWeb------会话跟踪技术(Cookie、Session)(完整知识点汇总)

会话跟踪技术&#xff08;Cookie&Session&#xff09; 注意&#xff1a; HTTP协议是无状态 的&#xff0c;即每次浏览器向服务器请求时&#xff0c;服务器都会将该请求视为新的请求&#xff0c;因此我们需要会话跟踪技术来实现会话内的数据共享 会话 当用户打开浏览器&am…

基于STM32的智能仓储温湿度监控系统

目录 引言环境准备智能仓储温湿度监控系统基础代码实现&#xff1a;实现智能仓储温湿度监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;温湿度监控与管理问题解决方案与优化收尾与总结 1. 引言 智能仓储温湿度监…

【论文解读】Multiagent Multitraversal Multimodal Self-Driving: Open MARS Dataset

Open MARS Dataset 摘要引言Dataset CurationVehicle SetupData CollectionDataset Statistics Benchmark Task and ModelPlace RecognitionNeural Reconstruction Experimental ResultsVisual Place RecognitionNeural Reconstruction Opportunities and Challenges结论 摘要 …

echarts实现3D柱状图(视觉层面)

一、第一种效果 效果图 使用步骤 完整实例&#xff0c;copy就可直接使用 <template><div :class"className" :style"{height:height,width:width}" /> </template><script>import echarts from echartsrequire(echarts/theme/…

RAG技术下的文档智能检索

在数字化浪潮的推动下&#xff0c;信息检索已成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着数据量的爆炸式增长&#xff0c;如何快速精准地从海量文档中检索出有价值的信息&#xff0c;成为了一个巨大的挑战。本文将带您走进 Pinecone 向量数据库的世界&#xff0…

计算机图形学games101——MVP

首先记得一个知识点 在旋转矩阵中&#xff0c;旋转矩阵的逆矩阵就是旋转矩阵的转置&#xff0c;这个矩阵是正交矩阵 我们需要做到的就是观测变换&#xff0c;这个变换包括视图变换和投影变换&#xff08;投影变换包含正交变换和透视变换&#xff09; 三维变换复习 首先复习…

Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制

这里写目录标题 0. 机器人配置1. Ubuntu20.04配置TurtleBot3 Waffle Pi远程控制1.1 TurtleBot3 Waffle Pi端配置1.2 PC端配置1.2.1 安装turtlebot3的环境配置1.2.2 创建项目并安装Turtlebot31.2.3 配置环境变量 1.3 PC端与TurtleBot3进行通信1.3.1 PC端与机器人端互PING和SSH连…

ATA-L2水声功率放大器驱动水声换能器的测试研究

随着水声通信技术的发展&#xff0c;水下通信设备也开始逐步走向实用化&#xff0c;为了满足其实际的使用要求&#xff0c;功率放大器的设计需要具有高效率的特性&#xff0c;并能在水下长时间连续可靠的工作。 压电陶瓷换能器主要负责电信号与声信号之间的转换&#xff0c;换能…

ruoyi-cloud登录接口实现滑块验证码

一、前言 ruoyi项目默认的验证码是这样的 今天来尝试增加滑块验证码&#xff0c;我们用到的是tianai-captcha。 文档地址&#xff1a;http://doc.captcha.tianai.cloud/ 源码地址&#xff1a;https://gitee.com/tianai/tianai-captcha 下面来看具体的步骤。 二、后端 在g…

JL-33 手持式气象站/便携式气象站 小型气象站厂家 微型气象站

产品概述 手持式气象站是一款携带方便&#xff0c;操作简单&#xff0c;集多项气象要素于一体的可移动式气象观测仪器。产品采用传感器及芯片&#xff0c;能同时对空气温度、空气湿度、风速、风向、光照、大气压力、颗粒物、噪声等要素进行准确测量、记录并存储。仪器带有机械…

游泳哪个牌子好?6大游泳耳机选购技巧总结分享

游泳耳机作为水上运动爱好者和游泳专业人士的必备装备&#xff0c;不仅要能够抵御水的侵入&#xff0c;还要提供清晰的音质和舒适的佩戴体验。在市面上&#xff0c;不同品牌的游泳耳机琳琅满目&#xff0c;选择起来可能会令人头疼。本文旨在为您提供一份详尽的游泳耳机选购指南…

详细解释下flutter初始示例的代码

详细解释下flutter初始示例的代码 main 首句导入需要的包 类似于其他语言的import main函数为入口函数 包裹MyApp类 MyApp 这个类继承自无状态类 可见myapp不管理任何状态 build方法是所有widget内必须实现的方法 此处返回一个 ChangeNotferiProvider 可以看到它用于管理应…

2024年低碳发展与地球科学国际会议 (LCDES 2024)

2024年低碳发展与地球科学国际会议 (LCDES 2024) 2024 International Conference on Low Carbon Development and Earth Science 【重要信息】 大会地点&#xff1a;长沙 大会官网&#xff1a;http://www.iclcdes.com 投稿邮箱&#xff1a;iclcdessub-conf.com 【注意&#xf…

一个opencv实现检测程序

引言 图像处理是计算机视觉中的一个重要领域&#xff0c;它在许多应用中扮演着关键角色&#xff0c;如自动驾驶、医疗图像分析和人脸识别等。边缘检测是图像处理中的基本任务之一&#xff0c;它用于识别图像中的显著边界。本文将通过一个基于 Python 和 OpenCV 的示例程序&…

《昇思25天学习打卡营第6天|网络构建》

文章目录 前言&#xff1a;今日所学&#xff1a;1. 定义模型类2. 模型层3. 模型参数 前言&#xff1a; 在第六节中我们学习了网络构建&#xff0c;了解了神经网络模型是由神经网络层和Tensor操作构成&#xff0c;我们使用的mindspore.nn中提供了常见的升级网络层的实现&#x…

c++边界处理机制

1.vector std::vector&#xff1a;std::vector 是动态数组&#xff0c;它会在运行时动态地调整存储空间大小&#xff0c;因此当访问超出边界时&#xff0c;会触发运行时异常 std::out_of_range。可以通过try-catch块来捕获这种异常来处理越界访问。 #include <iostream>…

十五、【源码】给代理对象设置属性

源码地址&#xff1a;https://github.com/spring-projects/spring-framework 仓库地址&#xff1a;https://gitcode.net/qq_42665745/spring/-/tree/15-proxy-set-property 给代理对象设置属性 之前的代码是创建Bean进行判断&#xff0c;要不要进行代理&#xff0c;如果代理…

console 报错 之 Uncaught (in promise) RangeError: Maximum call stack size exceeded

1. 背景 demo 环境报错。。。 2. 报错问题 3. 问题原因 vue 报错: “RangeError: Maximum call stack size exceeded” 报错通常是由于无限的递归 导致的。当使用 Vue 路由时&#xff0c;如果设置不当&#xff0c;会导致无限的递归&#xff0c;最终导致栈溢出&#xff0c;即…

【TypeScript】TS入门到实战(详解:高级类型)

目录 第三章、TypeScript的数据类型 3.1 TypeScript的高级类型 3.1.1 class 3.1.1.1 熟悉class类 3.1.1.2 class类继承的两种方式 3.1.1.3 class类的5种修饰符 3.1.2 类型兼容 3.1.3 交叉类型 3.1.4 泛型 3.1.4.1 创建泛型函数 3.1.4.2 泛型函数的调用 3.1.4.3 泛型…

【操作与配置】Linux的CPU深度学习环境

Conda安装 可浏览官网&#xff1a;Miniconda — Anaconda 文档 这四条命令会快速而且悄悄地安装最新的64位安装程序&#xff0c;然后清理安装过程中产生的文件。如果需要安装 Linux 版本的其他版本或架构的 Miniconda&#xff0c;只需要在命令中更改安装程序的名称。 mkdir …