在日常办公中,员工经常需要从PDF文件中提取表格数据。手动进行OCR识别、表格提取、重命名和导出操作繁琐且容易疲劳。例如,行政人员处理办公用品采购清单PDF时,每次都要重复这些步骤,自动化工具可大大节省时间。
以下是一个使用 WPF 和飞桨来完成批量扫描 PDF 文档和扫描图片文件指定多个区域文字对文件批量重命名的完整开发案例:
一、开发思路
- 使用 WPF 构建一个用户界面,允许用户选择输入文件夹(包含 PDF 和图片文件),并在界面上添加区域选择功能。
- 对于 PDF 文件,使用
pdf2image
将其转换为图片文件,然后使用飞桨进行 OCR 识别。 - 对于图片文件,直接使用飞桨进行 OCR 识别。
- 允许用户在界面上指定多个区域进行识别,对每个文件根据识别结果进行重命名。
二、环境搭建
- 安装所需工具和库:
- 确保已安装 Visual Studio,用于开发 WPF 应用程序。
- 在 Visual Studio 中创建一个新的 WPF 项目。
- 安装飞桨相关的库:通过调用飞桨的 REST API 或使用飞桨的 JavaScript 库结合 WPF 的
WebView2
控件,这里假设使用调用 REST API 的方式,确保有一个运行飞桨 OCR 服务的服务器,或使用飞桨官方提供的 OCR 服务。 - 安装
pdf2image
库:在 Python 环境中使用pip install pdf2image
安装,用于将 PDF 转换为图片。 - 安装
EPPlus
库:在 Visual Studio 中,通过 NuGet 包管理器安装EPPlus
库,用于操作 Excel 文件。
三、构建 WPF 界面
- 设计界面布局:
- 在
MainWindow.xaml
文件中设计界面,包括:- 一个
Button
用于选择输入文件夹。 - 一个
ListBox
用于显示文件列表。 - 一个
Canvas
用于显示文件内容(对于图片和 PDF 转换后的图片)并允许用户绘制矩形区域。 - 多个
Button
用于开始处理、添加区域、清除区域、重命名文件等操作。
- 一个
- 在
以下是一个简单的 MainWindow.xaml
示例:
xml
<Window x:Class="BatchOCRRenamer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Batch OCR Renamer" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height&