Project Icon

InvoiceNet

深度神经网络,从发票文档中提取智能信息

InvoiceNet是一个通过深度神经网络从PDF、JPG、PNG格式的发票中提取智能信息的工具。它提供一个便捷的用户界面供用户查看和提取发票信息,并支持自定义模型的训练。用户可以根据需求添加或删除发票字段,并将提取的信息一键保存到系统中。详细的安装指南支持Ubuntu和Windows,并包含数据准备、字段添加以及使用GUI和CLI的说明。

InvoiceNet 标志


深度神经网络从发票文件中提取智能信息。

概要

  • 易于使用的用户界面,用于查看 PDF/JPG/PNG 发票并提取信息。
  • 使用训练用户界面在您的数据集上训练自定义模型。
  • 根据您的方便添加或删除发票字段。
  • 只需点击一下按钮即可将提取的信息保存到您的系统中。

:star: 我们感谢您的星标,这对我们有帮助!

InvoiceNet 标志由Sidhant Tibrewal设计。 查看 他的一些美丽设计作品。


InvoiceNet


免责声明:

目前没有一些通用发票字段的预训练模型,但很快就会提供。 培训 GUI 和数据准备脚本已经提供。

发票文件包含敏感信息,因此收集大量数据集一直很困难。 这使得像我们这样的开发者难以训练大规模的通用模型并将其提供给社区。

如果您有一份可以与我们共享的发票文件数据集,请联系我们 (sarthakmittal2608@gmail.com)。 我们拥有创建第一个公开可用的大规模发票数据集的工具,以及一个用于结构化信息提取的软件平台。


安装

Ubuntu 20.04

InvoiceNet 已在 Ubuntu 20.04 上开发并测试,通过 CUDA 版本: 11.8cuDNN 版本: 8.9.7,和 Tensorflow v2.13.1

要在 Ubuntu 上安装 InvoiceNet,请运行以下命令:

git clone https://github.com/naiveHobo/InvoiceNet.git
cd InvoiceNet/

# 运行安装脚本
./install.sh

install.sh 脚本会安装所有依赖项,创建一个虚拟环境,并在虚拟环境中安装 InvoiceNet。

要使用 InvoiceNet,您需要引入安装包的虚拟环境。

# 引入虚拟环境
source env/bin/activate

Windows 10

推荐的方法是在 Anaconda 环境中安装 InvoiceNet 及其依赖项:

git clone https://github.com/naiveHobo/InvoiceNet.git
cd InvoiceNet/

# 创建 conda 环境并激活
conda create --name invoicenet python=3.7
conda activate invoicenet

# 安装 InvoiceNet
pip install .

# 安装 poppler
conda install -c conda-forge poppler

在 Windows 10 上运行 InvoiceNet 之前,还需要单独安装一些依赖项:

数据准备

训练数据必须排列在单个目录中。发票文件应为PDF文件,并且每个发票应有一个对应的同名 JSON 标签文件。您的训练数据格式应如下:

train_data/
    invoice1.pdf
    invoice1.json
    nike-invoice.pdf
    nike-invoice.json
    12345.pdf
    12345.json
    ...

JSON 标签应具有以下格式:

{
 "vendor_name":"Nike",
 "invoice_date":"12-01-2017",
 "invoice_number":"R0007546449",
 "total_amount":"137.51",
 ... 其他字段
}

要开始数据准备过程,请在 GUI 中点击"Prepare Data"按钮,或按照以下说明在 CLI 中操作。

添加自定义字段

要向 InvoiceNet 添加您自己的字段,请打开 invoicenet/__init__.py

有 4 种预定义字段类型:

  • FIELD_TYPES["general"] :通用字段,如名称、地址、发票编号等。
  • FIELD_TYPES["optional"] :可选字段,可能并非所有发票中都存在。
  • FIELD_TYPES["amount"] :表示金额的字段。
  • FIELD_TYPES["date"] :表示日期的字段。

选择该字段的适当字段类型并添加以下行。

# 在文件末尾添加以下行

# 例如,要添加字段 total_amount
FIELDS["total_amount"] = FIELD_TYPES["amount"]

# 例如,要添加字段 invoice_date
FIELDS["invoice_date"] = FIELD_TYPES["date"]

# 例如,要添加字段 tax_id(可能是可选的)
FIELDS["tax_id"] = FIELD_TYPES["optional"]

# 例如,要添加字段 vendor_name
FIELDS["vendor_name"] = FIELD_TYPES["general"]

使用 GUI

InvoiceNet 为您提供一个 GUI,用于在您的数据上训练模型并使用该训练模型从发票文件中提取信息。

Trainer

运行以下命令以运行培训 GUI:

python trainer.py

运行以下命令以运行提取器 GUI:

python extractor.py

您需要先准备训练数据。 可以通过将 Data Folder 字段设置为包含训练数据的目录并点击 Prepare Data 按钮来完成。 数据准备完成后,可以点击 Start 按钮开始训练。

使用 CLI

训练

首先通过运行以下命令准备训练数据:

python prepare_data.py --data_dir train_data/

使用以下命令训练 InvoiceNet:

python train.py --field 输入字段 --batch_size 8

# 例如,对于字段 'total_amount'
python train.py --field total_amount --batch_size 8

预测

如果您想使用不同的 ocr,请在运行 predict.py 之前更改 ocr_engine 在此函数中 create_ngrams.py


单份发票

要从单个发票文件中提取一个字段,请运行以下命令:

python predict.py --field 输入字段 --invoice 发票文件路径

# 例如,从发票文件 invoices/1.pdf 中提取字段 total_amount
python predict.py --field total_amount --invoice invoices/1.pdf

多份发票

要使用已训练的 InvoiceNet 模型提取信息,您只需将 PDF 发票文件放在一个目录中,格式如下:

predict_data/
    invoice1.pdf
    invoice2.pdf
    ...

通过以下命令运行 InvoiceNet:

python predict.py --field 输入字段 --data_dir predict_data/

# 例如,对于字段 'total_amount'
python predict.py --field total_amount --data_dir predict_data/

参考文献

此实现主要基于 R. Palm 等人的工作,如果在科学出版物中使用,应引用以下内容(或前期的会议论文):

[1] Palm, Rasmus Berg, Florian Laws, and Ole Winther. "Attend, Copy, Parse End-to-end information extraction from documents." 2019 International Conference on Document Analysis and Recognition (ICDAR). IEEE, 2019.

@inproceedings{palm2019attend,
  title={Attend, Copy, Parse End-to-end information extraction from documents},
  author={Palm, Rasmus Berg and Laws, Florian and Winther, Ole},
  booktitle={2019 International Conference on Document Analysis and Recognition (ICDAR)},
  pages={329--336},
  year={2019},
  organization={IEEE}
}

注意

基于论文 "Cloudscan - A configuration-free invoice analysis system using recurrent neural networks." 的一个较为劣质(也有些许缺陷)的发票处理系统的实现可在此处找到。

[2] Palm, Rasmus Berg, Ole Winther, and Florian Laws. "Cloudscan - A configuration-free invoice analysis system using recurrent neural networks." 2017 14th IAPR International Conference on Document Analysis and Recognition (ICDAR). Vol. 1. IEEE, 2017.

@inproceedings{palm2017cloudscan,
  title={Cloudscan-a configuration-free invoice analysis system using recurrent neural networks},
  author={Palm, Rasmus Berg, Winther, Ole and Laws, Florian},
  booktitle={2017 14th IAPR International Conference on Document Analysis and Recognition (ICDAR)},
  volume={1},
  pages={406--413},
  year={2017},
  organization={IEEE}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号