当前位置: 首页 > news >正文

【Python】批量提取超声波检查图片的某一行数据

目录

0. 背景

1. 坑点及解决方法

2. Python代码

3. 超声波检查图片(素材)


0. 背景

工作需求,需要批量提取多张焊点超声波检查结果的焊核平均直径、长径、短径数据,并导出至EXCEL表中,方便后续数据录入

1. 坑点及解决方法

序号坑点解决方案
1避免对整张图片进行全文识别再提取特定行数据,因OCR识别结果不稳定,可能导致数据所在行号发生变化缩小识别范围,通过ROI(感兴趣区域)定位特定数据区域,该方法已确认有效。
2输入多个文件夹时,文件路径使用os.path.join()连接后报错“\“与“/“,拼接后地址中左右正反斜杠都有使用root =  os.path.abspath(root)或os.path.normpath(root)

2. Python代码

# 步骤
# 1. 读取多个文件夹中的图片:遍历指定的文件夹,读取其中的图片。
# 2. 指定识别区域并进行OCR识别:根据图片内容,确定需要识别的区域,并使用Tesseract进行OCR识别。
# 3. 解析识别结果:解析识别结果并存储到Excel中,每行数据的关键词为文件夹名称和图片名称(去后缀)# 注意事项
# 文件夹和图片名称:确保文件夹和图片名称符合预期,避免因名称错误导致关键词生成错误。
# 下划线连接符:你可以根据实际需求选择不同的连接符,例如使用 - 或 . 等。
# 关键词唯一性:确保生成的关键词在所有数据中是唯一的,避免重复。如果存在重复的文件夹和图片名称,可以考虑添加其他标识符,例如时间戳或序号。import cv2
import pytesseract
import pandas as pd
import os
import time
from tkinter import filedialog, messagebox# 配置Tesseract路径(根据你的安装路径进行修改)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'# 读取图片并指定识别区域
def extract_text_from_image(image_path, roi):image = cv2.imread(image_path)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)x, y, w, h = roiroi_image = gray[y:y + h, x:x + w]text = pytesseract.image_to_string(roi_image, lang='chi_sim')return text# 解析数据
def parse_row_data(text):lines = text.split('\n')if len(lines) >= 1:row_data = lines[0].strip()parts = row_data.split()if len(parts) >= 3:return {'接合径(长+短)/2(mm)': parts[0],'长轴(mm)': parts[1],'短轴(mm)': parts[2]}return None# 批量处理图片并存储到Excel
def process_images(folder_paths, output_excel, roi):data = []start_time = time.time()  # 记录开始时间for folder_path in folder_paths:for filename in os.listdir(folder_path):if filename.endswith('.png') or filename.endswith('.jpg'):image_path = os.path.join(folder_path, filename)image_path = os.path.abspath(image_path)  # 拼接后地址中左右正反斜杠都有,使用abspath转化text = extract_text_from_image(image_path, roi)row_data = parse_row_data(text)if row_data:folder_name = os.path.basename(folder_path)image_name = os.path.splitext(filename)[0]keyword = f"{folder_name}_{image_name}"print(f"Image: {filename}, Ninth Row Data: {row_data}, Keyword: {keyword}")  # 打印第九行数据和关键词data.append({'Keyword': keyword, **row_data})df = pd.DataFrame(data)df.to_excel(output_excel, index=False)end_time = time.time()  # 记录结束时间elapsed_time = end_time - start_time  # 计算运行时间print(f"程序运行时间: {elapsed_time:.2f} 秒")def main():output_excel = 'output.xlsx' # 输出EXCELfolder_paths = filedialog.askdirectory(mustexist=True, title="选择文件夹(路径无中文)")if folder_paths:folder_paths = folder_paths.split('\n')roi = (300, 111, 402, 55)  # 请根据实际图片调整ROIprocess_images(folder_paths, output_excel, roi)messagebox.showinfo("完成", "处理完成!")else:messagebox.showerror("错误", "未选择文件夹")if __name__ == '__main__':main()

3. 超声波检查图片(素材)

http://www.dtcms.com/a/265419.html

相关文章:

  • Docker 容器如何实现资源限制(如 CPU 和内存)
  • MacOS Safari 如何打开F12 开发者工具 Developer Tools
  • 【C++】状态模式
  • 好用的自带AI功能的国产IDE
  • Go与Python爬虫对比及模板实现
  • 信刻光盘安全隔离与文件单向导入/导出系统
  • 高压电缆护层安全的智能防线:TLKS-PLGD 监控设备深度解析
  • NVIDIA Spectrum-3 SN4000 系列SN4000 SN4000 系列速度高达 400Gb/秒的现代横向扩展分布式数据中心应用提供支持。
  • 站在 Java 程序员的角度如何学习和使用 AI?从 MVC 到智能体,范式变了!
  • 使用Mac自带的图像捕捉导出 iPhone 相册
  • Mac电脑 虚拟机 VMware Fusion13
  • 办公文档批量打印器 Word、PPT、Excel、PDF、图片和文本,它都支持批量打印。
  • AI 如何批量提取 Word 表格中的字段数据到 Excel 中?
  • docker-compose一键部署全栈项目。springboot后端,react前端
  • 前端框架中注释占位与Fragment内容替换的实现与优化
  • 按键精灵 安卓脚本开发:游戏实战之自动切换账号辅助工具
  • 回归模型评价指标
  • 板凳-------Mysql cookbook学习 (十一--------3)
  • c# [AllowAnonymous] API 匿名访问
  • 微软发布突破性医疗AI系统
  • 基于 Elasticsearch 实现地图点聚合
  • thinkphp中间件
  • Redis—哨兵模式
  • OpenCV篇——项目(二)OCR文档扫描
  • DHCP中继及动态分配
  • 万字详解AVL树
  • 【指针(4)-- 深入理解指针】
  • “AI+”赋能千行百业创新融合的应用场景
  • UE5音频技术
  • 【动态规划】P11188 「KDOI-10」商店砍价|普及+