pdf-picker/README.md
2026-05-27 13:42:17 +08:00

126 lines
2.7 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 回执拆分与分类工具。
## 1. 功能概览
- 扫描输入目录中的 PDF 文件
- 按页面内回执数量拆分并导出图片
- 从文本中提取“收/付款人全称”并按名称分类到输出目录
- 文本提取失败时可使用 OCR 兜底
- 生成执行结果记录文件(含每个 PDF 的目录与图片明细)
## 2. 目录结构
- index.go主程序入口收款人版本
- index_fk.go主程序入口付款人版本
- go.mod / go.sumGo 模块依赖
- 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 exemacOS 交叉编译)
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
```