126 lines
2.7 KiB
Markdown
126 lines
2.7 KiB
Markdown
# pdf-picker
|
||
|
||
基于 Go 的 PDF 回执拆分与分类工具。
|
||
|
||
## 1. 功能概览
|
||
|
||
- 扫描输入目录中的 PDF 文件
|
||
- 按页面内回执数量拆分并导出图片
|
||
- 从文本中提取“收/付款人全称”并按名称分类到输出目录
|
||
- 文本提取失败时可使用 OCR 兜底
|
||
- 生成执行结果记录文件(含每个 PDF 的目录与图片明细)
|
||
|
||
## 2. 目录结构
|
||
|
||
- index.go:主程序入口(收款人版本)
|
||
- index_fk.go:主程序入口(付款人版本)
|
||
- go.mod / go.sum:Go 模块依赖
|
||
- source/:默认输入目录(放 PDF)
|
||
- output/:默认输出目录(分类后的图片)
|
||
- dist/:构建产物目录
|
||
|
||
## 3. 运行环境
|
||
|
||
- Go 1.19+
|
||
- C 编译器(go-fitz 依赖 cgo)
|
||
- 可选:Tesseract OCR(用于识别扫描件)
|
||
|
||
当前依赖:
|
||
- github.com/gen2brain/go-fitz v1.20.2
|
||
|
||
## 4. 本地运行(Go)
|
||
|
||
### 4.1 直接运行 index.go
|
||
|
||
```bash
|
||
go run index.go
|
||
```
|
||
|
||
默认目录:
|
||
- 输入:./source
|
||
- 输出:./output
|
||
|
||
### 4.2 指定目录(示例)
|
||
|
||
```bash
|
||
go run index.go -i ./source -o ./output2
|
||
```
|
||
|
||
## 5. Windows 打包
|
||
|
||
### 5.1 Windows 本机构建(PowerShell)
|
||
|
||
```powershell
|
||
go mod tidy
|
||
go build -o dist\pdf-picker.exe index_fk.go
|
||
```
|
||
|
||
### 5.2 macOS 交叉编译 Windows exe(本次已验证)
|
||
|
||
先安装 MinGW:
|
||
|
||
```bash
|
||
brew install mingw-w64
|
||
```
|
||
|
||
打包命令:
|
||
|
||
```bash
|
||
mkdir -p dist && CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go build -o dist/pdf-picker.exe index_fk.go
|
||
```
|
||
|
||
产物:
|
||
- dist/pdf-picker.exe
|
||
|
||
## 6. 输出说明
|
||
|
||
运行后会生成:
|
||
|
||
- 控制台统计信息
|
||
- 执行结果记录_YYYYMMDD_HHMMSS.txt
|
||
|
||
记录内容包括:
|
||
- 每个 PDF 拆分目录数
|
||
- 每个目录对应图片数量
|
||
- 识别成功/失败数量
|
||
- 全部汇总
|
||
|
||
## 7. OCR 说明
|
||
|
||
文本提取失败时会尝试调用:
|
||
|
||
```text
|
||
tesseract <image> stdout -l chi_sim+eng
|
||
```
|
||
|
||
未安装 tesseract 时会自动跳过 OCR,不影响主流程(但扫描件识别率会下降)。
|
||
|
||
## 8. 常见问题
|
||
|
||
### Q1:构建时报 gcc not found
|
||
|
||
原因:缺少 cgo 编译器。
|
||
|
||
处理:
|
||
- Windows:安装 LLVM-MinGW 或 MinGW-w64,并配置 CC/CXX
|
||
- macOS 交叉编译:安装 mingw-w64
|
||
|
||
### Q2:没有识别出“付款人全称”
|
||
|
||
可能原因:
|
||
- PDF 为扫描件且 OCR 不可用
|
||
- 单据模板字段格式与当前规则不一致
|
||
|
||
可通过增强正则规则或补充 OCR 环境提升识别率。
|
||
|
||
## 9. 快速开始
|
||
|
||
```bash
|
||
# 1) 放入 PDF 到 source
|
||
# 2) 运行
|
||
go run index_fk.go
|
||
|
||
# 3) 或直接打包 Windows exe(macOS 交叉编译)
|
||
mkdir -p dist && CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go build -o dist/pdf-picker.exe index_fk.go
|
||
```
|