Skip to content

mlb0925/smart-invoice-extractor

Repository files navigation

智能发票处理系统

基于PaddleOCR + langchain + qwen2.5:7b的完整发票自动化处理解决方案

📋 项目简介

这是一个功能完整的发票处理系统,能够自动识别和提取发票中的关键信息。系统支持多种文件格式(PDF和图片),结合OCR技术和大语言模型,实现从原始文件到结构化数据的完整处理流程。

✨ 主要特性

  • 🔍 多格式支持: 同时支持PDF文档和图片文件(JPG/PNG等)
  • 🧠 智能识别: 集成qwen2.5:7b大语言模型进行智能数据提取
  • 📊 批量处理: 支持多文件批量处理,提高工作效率
  • 📋 多格式输出: 生成HTML、Word、Excel、JSON等多种格式的报告
  • 📈 统计分析: 自动生成发票数据统计和分析报告
  • 🛡️ 容错设计: 多重备用方案,确保系统稳定运行

🏗️ 系统架构

智能发票处理系统/
├── main.py                 # 主程序入口
├── invoice_extractor.py    # OCR文字提取器
├── langchain_processor.py  # LLM数据处理器
├── invoice_statistics.py   # 统计分析器
├── report_generator.py     # 报告生成器
├── requirements.txt        # 依赖配置
├── INSTALL.md             # 详细安装指南
├── CSDN_Article.md        # 技术文章
└── README.md             # 项目说明

🚀 快速开始

环境要求

  • Python 3.8+
  • Linux/Windows/macOS
  • 至少4GB RAM

安装步骤

1. 克隆项目

git clone https://github.com/mlb0925/smart-invoice-extractor
cd smart-invoice-extractor

2. 安装Python依赖

pip install -r requirements.txt

3. 安装PaddlePaddle(核心OCR引擎)

# Linux CPU版本
python -m pip install paddlepaddle==3.3.1 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/

# Windows CPU版本
pip install "paddlepaddle[ocr]==3.4.0"

4. 安装Ollama(大语言模型服务)

# Linux
curl -fsSL https://ollama.ai/install.sh | sh

# Windows/macOS: 从官网下载安装包

5. 下载qwen2.5:7b模型

ollama serve  # 启动Ollama服务
ollama pull qwen2.5:7b  # 下载模型

系统依赖安装

Ubuntu/Debian

sudo apt-get update
sudo apt-get install -y poppler-utils

CentOS/RHEL

sudo yum install -y poppler-utils

📖 使用方法

命令行使用

处理单个文件

python main.py --image invoice.jpg
python main.py --image invoice.pdf

批量处理目录

python main.py --batch uploads/

从数据生成报告

python main.py --data output/ --output reports/

交互模式

python main.py --interactive

Python API使用

from invoice_extractor import InvoiceExtractor
from langchain_processor import InvoiceDataProcessor

# 1. OCR文字提取
extractor = InvoiceExtractor()
result = extractor.extract_from_image('invoice.pdf')

# 2. LLM数据结构化
processor = InvoiceDataProcessor()
data = processor.process_invoice_text(result['text'])

print(data)
# 输出示例:
# {
#   'invoice_number': '42074197',
#   'invoice_date': '2021-04-12',
#   'total_amount': 99.01,
#   'seller_name': '济南兴旺达商贸有限公司',
#   'buyer_name': '刘景军'
# }

📊 处理结果示例

提取的数据结构

[
  {
    "invoice_number": "42074197",
    "invoice_date": "2021-04-12",
    "total_amount": 99.01,
    "seller_name": "济南兴旺达商贸有限公司",
    "buyer_name": "刘景军",
    "tax_amount": 0.9
  }
]

生成的报告

  • 📄 HTML报告: 美观的网页格式,包含统计图表
  • 📝 Word报告: 适合打印和存档的文档格式
  • 📊 Excel报告: 支持数据筛选和进一步分析
  • 💾 JSON数据: 结构化数据,方便程序处理

🔧 核心技术

OCR文字识别

  • 引擎: PaddleOCR 3.4.0
  • 框架: PaddlePaddle 3.3.1
  • 语言: 中文识别优化
  • 准确率: 95%+

大语言模型处理

  • 模型: qwen2.5:7b
  • 框架: LangChain
  • 功能: 智能数据提取和结构化
  • 备用方案: 正则表达式处理

PDF处理

  • 文字PDF: pdfplumber直接提取
  • 扫描PDF: 转换为图片后OCR识别
  • 兼容性: 自动检测PDF类型

📈 性能表现

  • 处理速度: PDF 3-5秒,图片 30-60秒
  • 准确率: 文字提取95%,数据结构化90%
  • 内存占用: 稳定在500MB以内
  • 并发处理: 支持批量处理多个文件

🛠️ 故障排除

常见问题

1. PaddlePaddle安装失败

# 尝试更换镜像源
pip install paddlepaddle==3.3.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

2. Ollama连接失败

# 检查服务状态
ollama list
ollama serve

# 检查端口占用
netstat -tlnp | grep 11434

3. PDF处理失败

# 安装系统依赖
sudo apt-get install -y poppler-utils

4. 内存不足

# 分批处理大文件
python main.py --image large_file.pdf

🤝 贡献指南

欢迎提交Issue和Pull Request!

开发环境设置

# 1. Fork项目
# 2. 克隆到本地
git clone https://github.com/mlb0925/smart-invoice-extractor

# 3. 安装开发依赖
pip install -r requirements.txt

# 4. 运行测试
pytest

# 5. 代码格式化
black .

提交规范

  • feat: 新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 测试相关
  • chore: 构建过程或工具配置修改

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🙏 致谢

📞 联系我们


About

基于PaddleOCR + langchain + qwen2.5:7b的完整发票自动化处理解决方案

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages