Skip to content

bainningking/invoice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

发票识别工具

一个基于OCR技术的发票信息提取工具,能够自动从PDF发票中提取关键信息并导出到Excel文件。

功能特点

  • 🔍 智能识别:使用PaddleOCR技术识别PDF发票中的文本
  • 📄 批量处理:支持多页PDF文件的批量处理
  • 🎯 精准提取:自动提取发票代码、发票号码、开票日期、校验码信息
  • 📊 数据导出:将提取结果导出为Excel格式,便于后续处理
  • 🖥️ 图形界面:基于Flet框架的直观用户界面
  • 🔧 调试支持:可选择保存裁剪后的图片,便于调试和优化

安装说明

环境要求

  • Python 3.12 或更高版本
  • 推荐使用 uv 包管理器

安装步骤

  1. 克隆或下载项目到本地
  2. 在项目目录中运行以下命令安装依赖:
# 使用uv安装依赖
uv sync

# 或者使用pip安装
pip install -r requirements.txt

依赖包

项目依赖以下主要包:

  • flet - 图形用户界面框架
  • paddleocr - OCR文字识别引擎
  • pymupdf - PDF文件处理
  • pandas - 数据处理和导出
  • numpy - 数值计算
  • pillow - 图像处理
  • openpyxl - Excel文件操作

使用方法

启动应用

# 使用uv运行
uv run main.py

# 或者直接运行Python文件
python main.py

操作步骤

  1. 选择PDF文件:点击"上传PDF"按钮选择要处理的发票PDF文件
  2. 设置输出位置:点击"输出位置"按钮选择结果保存目录(默认为当前目录)
  3. 配置选项:可选择是否保存裁剪后的图片(用于调试)
  4. 开始处理:点击"开始处理"按钮,程序将自动处理PDF文件
  5. 查看结果:处理完成后,可点击"打开输出文件"按钮查看Excel结果

输出格式

程序会生成一个Excel文件,包含以下字段:

字段 说明
页码 发票在PDF中的页码
发票代码 发票的唯一代码
发票号码 发票的编号
开票日期 发票开具日期
校验码 发票校验码

技术架构

核心组件

  • PDFProcessor:负责PDF文件的解析和页面区域提取
  • OCREngine:基于PaddleOCR的文字识别引擎
  • InvoiceFieldExtractor:从识别文本中提取发票字段
  • InvoiceProcessor:协调各组件完成整个处理流程
  • InvoiceApp:基于Flet的图形用户界面

处理流程

  1. PDF页面解析,提取右上角区域(横向70-100%,纵向0-25%)
  2. 对提取的图像进行OCR文字识别
  3. 使用正则表达式从识别文本中提取发票字段
  4. 将结果整理并导出为Excel文件

配置说明

裁剪区域配置

Constants 类中可以调整裁剪区域的参数:

CROP_LEFT_RATIO = 0.7    # 左边界比例
CROP_TOP_RATIO = 0.0     # 上边界比例
CROP_RIGHT_RATIO = 1.0   # 右边界比例
CROP_BOTTOM_RATIO = 0.2  # 下边界比例

OCR配置

OCR引擎使用PaddleOCR,支持中文识别。默认配置:

  • 启用角度分类
  • 语言:中文

故障排除

常见问题

  1. OCR识别率低

    • 确保PDF文件清晰度足够
    • 尝试调整裁剪区域参数
    • 启用"保存裁剪后的图片"选项检查裁剪效果
  2. PDF处理失败

    • 检查PDF文件是否损坏
    • 确认PDF文件权限是否可读
  3. Excel导出失败

    • 确保输出目录有写入权限
    • 检查是否已存在同名文件被占用

日志查看

应用界面底部提供实时日志显示,可以:

  • 查看处理进度和状态
  • 复制日志到剪贴板
  • 识别错误信息

开发说明

项目结构

invoice/
├── main.py              # 主程序文件
├── pyproject.toml       # 项目配置和依赖
├── uv.lock             # 依赖锁定文件
├── .python-version     # Python版本配置
└── README.md           # 项目说明文档

扩展开发

如需扩展功能或修改识别逻辑,主要关注以下类:

  • InvoiceFieldExtractor - 修改字段提取逻辑
  • Constants - 调整应用常量
  • InvoiceApp - 修改用户界面

许可证

本项目采用MIT许可证,详情请参阅LICENSE文件。

贡献指南

欢迎提交Issue和Pull Request来改进这个项目!

更新日志

v0.1.0

  • 初始版本发布
  • 实现基本的PDF发票识别功能
  • 支持导出到Excel
  • 提供图形用户界面

About

发票识别,只识别右上角,本地paddleocr模型

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages