pdf-picker/README.md
2026-05-26 21:36:35 +08:00

141 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# pdf-picker
基于 Go 的 PDF 回执拆分与分类工具。
功能说明:
- 扫描输入目录中的 PDF 文件
- 将回执按页面内多条回执进行拆分并导出图片
- 从文本中提取“收款人全称”并按名称分类到输出目录
- 识别失败时可使用 OCR 兜底
- 生成执行结果记录文件(含每个 PDF 的目录与图片明细)
## 1. 项目结构
- index.go: Go 主程序
- go.mod / go.sum: Go 模块依赖
- source/: 默认输入目录(放 PDF
- output/: 默认输出目录(分类后的图片)
## 2. 运行环境
- Windows
- Go 1.19+
- C 编译器(用于 cgogo-fitz 依赖)
- 可选Tesseract OCR用于识别扫描件
当前项目依赖:
- github.com/gen2brain/go-fitz v1.20.2
## 3. 工具链配置Windows
如果构建时报错 `gcc not found`,可使用 LLVM-MinGW。
示例(已验证可用路径):
1) 安装 LLVM-MinGW任选一种
- 使用 winget
- 手动下载并解压到 C:/llvm-mingw
2) 配置 Go 使用 clang 作为 cgo 编译器PowerShell
```powershell
go env -w CC="C:\llvm-mingw\llvm-mingw-20260519-ucrt-x86_64\bin\clang.exe"
go env -w CXX="C:\llvm-mingw\llvm-mingw-20260519-ucrt-x86_64\bin\clang++.exe"
go env -w CGO_ENABLED=1
```
3) 检查配置
```powershell
go env CC CXX CGO_ENABLED
```
## 4. 编译
```powershell
go mod tidy
go build index.go
```
编译成功后会生成可执行文件:
- index.exe
## 5. 运行
### 5.1 默认目录
```powershell
.\index.exe
```
等价于:
- 输入目录:./source
- 输出目录:./output
### 5.2 指定目录(短参数)
```powershell
.\index.exe -i ./source -o ./output2
```
### 5.3 指定目录(位置参数)
```powershell
.\index.exe ./source ./output2
```
优先级:
- 命名参数(-i/-o 或 --input/--output
- 位置参数
- 默认目录source/output
## 6. 输出结果
运行结束后会看到控制台统计,并在项目根目录生成记录文件:
- 执行结果记录_YYYYMMDD_HHMMSS.txt
记录内容包括:
- 每个 PDF 拆分目录数
- 每个目录对应图片数量
- 识别成功/失败数量
- 全部汇总
## 7. OCR 说明
程序在文本提取失败时会尝试调用:
```text
tesseract <image> stdout -l chi_sim+eng
```
如果本机未安装 tesseractOCR 兜底会自动跳过,不影响程序主流程(但扫描件识别率会下降)。
## 8. 常见问题
### Q1: 构建时报 `gcc not found`
原因:缺少 cgo 编译器。
处理:按第 3 节安装并配置 LLVM-MinGW。
### Q2: 构建时出现大量 `ld.lld: warning: duplicate symbol`
这是链接阶段警告,若最终退出码为 0 且生成 index.exe可继续使用。
### Q3: 没有识别出“收款人全称”
- 可能是 PDF 为扫描件且 OCR 不可用
- 可能是单据模板字段格式与当前规则不一致
可通过增强正则规则或补充 OCR 环境提升识别率。
## 9. 快速开始
```powershell
# 1) 放入 PDF 到 source
# 2) 编译
go build index.go
# 3) 运行
.\index.exe -o ./output2
```