python提取圖片中的文字寫入excel文件,并打包為exe可執行文件

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將數據寫入Exceldf = 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.pswp.cn/web/38373.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38373.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38373.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

入門Salesforce:必須掌握的20+基礎專業術語!

Salesforce的發展令人印象深刻。在過去的20年中&#xff0c;Salesforce創建了一個由管理員、開發人員、顧問和用戶組成的生態系統&#xff0c;不斷顛覆創新CRM&#xff0c;促進平等和多樣性。 作為初學者&#xff0c;探索Salesforce領域就像學習一門新語言。Salesforce中有著大…

Postman環境變量秘籍:pm.environment的高級使用指南

&#x1f4d3; Postman環境變量秘籍&#xff1a;pm.environment的高級使用指南 Postman是API開發和測試的強大工具&#xff0c;它提供了豐富的功能來簡化和加速開發過程。pm.environment 是Postman中用于管理環境變量的內置對象&#xff0c;它允許你在集合運行時存儲和訪問環境…

YOLOv8改進 | 卷積模塊 | 減少冗余計算和內存訪問的PConv【CVPR2023】

秋招面試專欄推薦 &#xff1a;深度學習算法工程師面試問題總結【百面算法工程師】——點擊即可跳轉 &#x1f4a1;&#x1f4a1;&#x1f4a1;本專欄所有程序均經過測試&#xff0c;可成功執行&#x1f4a1;&#x1f4a1;&#x1f4a1; 專欄目錄 &#xff1a;《YOLOv8改進有效…

Vue3詳解

vite和webpack區別 vite vite使用原生ES模塊進行開發&#xff0c;無需在編譯時將所有代碼轉換為JS打包&#xff0c;從而提供了更快的熱更新和自動刷新功能&#xff1b; vite在開發模式下沒有打包步驟&#xff0c;而是利用瀏覽器的ES Module Imports特性實現按需編譯&#xff…

深入分析 Android HTTPS 證書管理策略:設置本地證書、使用系統默認證書和忽略證書

深入分析 Android HTTPS 證書管理策略&#xff1a;設置本地證書、使用系統默認證書和忽略證書 在 Android 應用開發中&#xff0c;確保 HTTPS 請求的安全性至關重要。為實現這一目標&#xff0c;我們可以通過不同的方式來管理 HTTPS 證書。本文將詳細探討三種常見的證書管理策…

【ajax實戰08】分頁功能

本文章目標&#xff1a;點擊上/下一頁按鈕&#xff0c;實現對應頁面的變化 實現基本步驟&#xff1a; 一&#xff1a;保存并設置文章總條數 設置一個全局變量&#xff0c;將服務器返回的數據返回給全局變量 二&#xff1a;點擊下一頁&#xff0c;做臨界值判斷&#xff0c;并…

Firefox 編譯指南2024 Windows10篇- 編譯Firefox(三)

1.引言 在成功獲取了Firefox源碼之后&#xff0c;下一步就是將這些源碼編譯成一個可執行的瀏覽器。編譯是開發流程中的關鍵環節&#xff0c;通過編譯&#xff0c;我們可以將源代碼轉換為可執行的程序&#xff0c;測試其功能&#xff0c;并進行必要的優化和調試。 對于像Firef…

git命令含有中文,終端輸出中文亂碼的問題

目錄 1、[當前代碼頁] 的936 (ANSI/OEM - 簡體中文 GBK) 是導致中文亂碼的原因 2、這樣會導致什么問題呢&#xff1f; (1) 問題一: 【屬性】選項的【字體】無法識別自定義文字樣式&#xff0c;【默認值】選項可選自定義字體樣式&#xff0c;卻無法覆蓋【屬性】選項 (2) 問題…

品牌推廣怎么樣?掌握正確做法,讓品牌大放異彩!

品牌推廣對于初創公司來說是一項至關重要的任務。在市場眾多品牌中&#xff0c;如何脫穎而出&#xff0c;是每個品牌方都要考慮的問題。 作為一名手工酸奶品牌的創始人&#xff0c;目前全國復制了100多家門店&#xff0c;我來分享下&#xff0c;如何推廣&#xff0c;可以讓品牌…

通過shell腳本創建MySQl數據庫

通過shell腳本創建數據庫 #!/bin/bashserverIP10.1.1.196 SERVER_NAMEecho $serverIP | cut -d . -f4cat<<EOF>db.sql drop database if exists ${SERVER_NAME}_scheduler; drop database if exists ${SERVER_NAME}_kms; drop database if exists ${SERVER_NAME}_uim…

Unity 粒子特效(下)

11、Size over Lifetime(生命周期內大小) 主要用于定義粒子從發射到消亡的整個生命周期內&#xff0c;其大小如何隨時間發生變化。通過該模塊&#xff0c;可以創建出如煙霧擴散、火焰膨脹等。Separate Axes&#xff1a;當勾選此選項時&#xff0c;可以分別控制粒子在X軸、Y軸和…

自定義控件動畫篇(四)ObjectAnimator的使用

ObjectAnimator 是 Android 屬性動畫框架中的一個重要組件&#xff0c;它允許你針對特定屬性的值進行動畫處理。與 ValueAnimator 相比&#xff0c;ObjectAnimator 更專注于 UI 組件&#xff0c;可以直接作用于視圖的屬性&#xff0c;如位置、尺寸、透明度等&#xff0c;而無需…

詳細闡述 Spring Boot 的核心概念、優勢、開發流程、常見配置以及最佳實踐

Spring Boot 是一種基于 Java 的框架&#xff0c;它簡化了基于 Spring 的應用開發。通過自動配置和嵌入式服務器等技術&#xff0c;Spring Boot 使得開發者可以快速搭建并運行 Spring 應用。下面&#xff0c;我將詳細闡述 Spring Boot 的核心概念、優勢、開發流程、常見配置以及…

閉包的不同形式

定義 **閉包&#xff08;closure&#xff09;**是一個函數以及其捆綁的周邊環境狀態&#xff08;lexical environment&#xff0c;詞法環境&#xff09;的引用的組合。換而言之&#xff0c;閉包讓開發者可以從內部函數訪問外部函數的作用域。在 JavaScript 中&#xff0c;閉包…

【Jetpack】ViewModel使用技巧

ViewModel的基本使用方法&#xff0c;這里不再講解 ViewModel優點 可以在屏幕旋轉之后&#xff0c;仍然保持之前的狀態&#xff0c;這樣就不用刻意去處理屏幕旋轉事件可以輕松實現作用域內的單例模式可以輕松在作用域內進行數據共享 ViewMode使用注意 不能將Activity作為Co…

Centos7修改yum源

安裝好系統后&#xff0c;網絡能通信&#xff0c;源也沒有配置&#xff0c;但是安裝軟件失敗。 解決辦法&#xff1a;配置阿里yum源 # curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # yum clean all # yum make cache再次安裝軟…

AI安全研究滯后?清華專家團來支招

在21世紀的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;無疑是最為耀眼的一抹亮色。隨著技術的不斷突破&#xff0c;AI正以前所未有的速度融入我們的日常生活&#xff0c;重塑著社會、經濟乃至人類文明的面貌。然而&#xff0c;在這股洶涌澎湃的發展洪流中&#…

二分查找1

1. 二分查找&#xff08;704&#xff09; 題目描述&#xff1a; 算法原理&#xff1a; 暴力解法就是遍歷數組來找到相應的元素&#xff0c;使用二分查找的解法就是每次在數組中選定一個元素來將數組劃分為兩部分&#xff0c;然后因為數組有序&#xff0c;所以通過大小關系舍棄…

七天速通javaSE:第五天 數組基礎

文章目錄 前言一、認識數組二、數組的聲明和創建1. 聲明數組變量2. 創建數組3. 變量的初始化&#xff08;賦值&#xff09;3.1 靜態初始化3.2 動態初始化 3. 示例 三、數組的使用1. 循環1.1 普通for循環1.2 For-Each 循環 2. 數組作為函數的參數和返回值 前言 本文將為大家介紹…

Win11 Python3.10 安裝pytorch3d

0&#xff0c;背景 Python3.10、cuda 11.7、pytorch 2.0.1 閱讀【深度學習】【三維重建】windows10環境配置PyTorch3d詳細教程-CSDN博客 1&#xff0c;解決方法 本來想嘗試&#xff0c;結果發現CUB安裝配置對照表里沒有cuda 11.7對應的版本&#xff0c;不敢輕舉妄動&#x…