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

【Python】【OCR识别】 提取图片文字并根据内容智能分类存储

Python 使用PaddleOCR引擎识别图片内容,提取图片文字并根据内容智能分类存储

在这里插入图片描述
上一篇文章提到了OCR提取文字,并格式化处理提取内容,这篇我们把图片分类并储存功能实现一下

目录

    • Python 使用PaddleOCR引擎识别图片内容,提取图片文字并根据内容智能分类存储
    • 1、项目概述
    • 2、核心功能
    • 3、核心配置
    • 4、目录结构
    • 5、执行流程
    • 6、代码编写
    • 7、结果核查

1、项目概述

基于PaddleOCR引擎实现纺织品标签图像的自动化处理,通过文字识别与语义分析实现智能分类归档。系统可自动将含有特定成分信息的图像按预设规则分类存储。

2、核心功能

  • 多格式支持
    支持.jpg/.png/.jpeg格式图像文件批处理

  • 语义识别分类
    内置4大类语义特征识别:

    • 公制单位(克重/密度/尺寸)
    • 合成纤维(聚酯/尼龙/涤纶)
    • 环保材料(再生/有机/ECO)
    • 混合材料(混纺/百分比组合)
CATEGORIES = [("公制单位", [r"G/SQM", r"g/m2", r"厘米", r"cm", r"克", r"gram"]),("合成纤维", [r"聚酯", r"polyester", r"尼龙", r"nylon", r"涤纶", r"polyamide"]),("环保材料", [r"再生", r"recycled", r"有机", r"organic", r"eco", r"green"]),("混合材料", [r"/", r"%", r"混纺", r"blend", r"mixed"])
]
  • 自动化归档
    根据识别结果自动创建分类目录并移动文件

3、核心配置

安装核心依赖
pip install paddleocr pillow

4、目录结构

📂 images/ # 原始图片存放目录
📂 images_results/ # 处理结果输出目录
├── 公制单位 # 含重量/尺寸参数的标签
├── 合成纤维 # 含单一化纤成分的标签
├── 环保材料 # 含环保声明的标签
└── 混合材料 # 含多种成分混合的标签

5、执行流程

python fabric_classifier.py

6、代码编写

from pathlib import Path
from paddleocr import PaddleOCR
import re
import os# 初始化 OCR(第一次运行会自动下载模型)
ocr = PaddleOCR(use_angle_cls=True, lang='ch', use_gpu=False)  # 中文识别更准确# 分类关键词定义(正则表达式不区分大小写)
CATEGORIES = [("公制单位", [r"G/SQM", r"g/m2", r"厘米", r"cm", r"克", r"gram"]),("合成纤维", [r"聚酯", r"polyester", r"尼龙", r"nylon", r"涤纶", r"polyamide"]),("环保材料", [r"再生", r"recycled", r"有机", r"organic", r"eco", r"green"]),("混合材料", [r"/", r"%", r"混纺", r"blend", r"mixed"])
]def classify_text(text):text_lower = text.lower()  # 统一转为小写便于匹配for category, keywords in CATEGORIES:for pattern in keywords:if re.search(pattern, text_lower, re.IGNORECASE):return categoryreturn "待分类"def ocr_and_classify(image_path):# 关键修复1:确保传入字符串路径result = ocr.ocr(str(image_path), cls=True)all_text = ""# 安全处理OCR结果if result and result[0]:for line in result[0]:if len(line) >= 2 and isinstance(line[1], (list, tuple)):word = line[1][0]all_text += word + " "print(f"识别出的文字:{all_text.strip()}")category = classify_text(all_text)print(f"分类结果:{category}")return categoryif __name__ == '__main__':# 输入输出路径设置ROOT_PATH = Path('./images').resolve()OUTPUT_DIR = ROOT_PATH.parent / f"{ROOT_PATH.name}_results"# 确保输入路径存在if not ROOT_PATH.exists():print(f"错误:输入目录不存在 {ROOT_PATH}")exit(1)# 遍历所有图片for image_path in ROOT_PATH.rglob('*.*'):if image_path.suffix.lower() in ('.jpg', '.png', '.jpeg'):# 进行分类category = ocr_and_classify(image_path)# 构建目标路径target_dir = OUTPUT_DIR / categorytarget_dir.mkdir(parents=True, exist_ok=True)# 移动文件(关键修复2:正确路径操作)new_path = target_dir / image_path.nametry:os.rename(str(image_path), str(new_path))print(f"文件移动成功:{image_path}{new_path}")except Exception as e:print(f"文件移动失败:{str(e)}")

7、结果核查

在这里插入图片描述
在这里插入图片描述

分类成功
在这里插入图片描述

感谢大佬指正 小Monkey
如果你觉得有用的话,就留个赞吧!蟹蟹

http://www.xdnf.cn/news/6628.html

相关文章:

  • C#运算符
  • 大语言模型与多模态模型比较
  • 【笔记】cri-docker.service和containerd
  • 特斯拉虚拟电厂:能源互联网时代的分布式革命
  • [IMX] 01.IVT 表长度计算
  • 考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示(浮点数篇)
  • 【springboot项目服务假死、内存溢出问题排查】
  • shell-awk
  • TVS管用万用表测量方法详解(含二极管档使用指南)
  • 【微信小程序】webp资源上传失败
  • 告别碎片化!MCP 带来 AI Agent 开发生态的革命性突破
  • Qt之QMessageBox
  • 【RabbitMQ】实现RPC通信的完整指南
  • 浅谈算法中的贪心策略:从直觉到策略的思维跨越
  • ios打包ipa获取证书和打包创建经验分享
  • (独家)SAP CO模块中 销售发票对应的Cost Document中的PSG对象是什么东东??
  • leetcode0621. 任务调度器-medium
  • 论QT6多线程技术
  • linux-配置定时任务
  • 一道canvas算法题(看过记录下)
  • js在浏览器执行原理
  • 【Linux】Linux安装并配置mysql
  • vue基本介绍
  • H.264/AVC 变换量化编码核心技术拆解
  • C#语言中 (元,组) 的发展史
  • Unity基础学习(十五)核心系统——音效系统
  • PC:使用WinSCP密钥文件连接sftp服务器
  • c++作业整理2
  • 纯前端实现基于位置的天气和动态背景图片
  • 行为型模式:责任链模式