导入简单的PDF供应商发票
项目描述
此模块是模块 account_invoice_import 的扩展:它增加了对简单PDF发票的支持,即没有嵌入XML文件的PDF发票。此模块开发出来是为了解决OCA模块 account_invoice_import_invoice2data 的缺点;其优点如下
可以添加对新的供应商的支持,无需开发者技能:会计可以做到!
添加对新供应商的支持更快。
对供应商发票布局变化的容忍度更高。
更容易安装。
使用此模块,您可以导入所有能够使用模块 account_invoice_import_invoice2data 导入的发票。实际上,当导入PDF供应商发票时,此模块使用了相同的设计
从PDF文件中提取原始文本
使用增值税号码(如果原始文本提取中包含增值税号码)或一些关键字来识别合作伙伴
使用正则表达式(regex)提取在Odoo中创建供应商发票所需的数据(单行配置)
与OCA模块 account_invoice_import_invoice2data 的主要区别在于,正则表达式是由用户在Odoo中进行的配置自动生成的。不需要是正则表达式专家!但是,您仍然可以编写正则表达式来提取一些特定需要的字段。
模块可以提取以下字段
含税总额
不含税总额
税额总额
发票日期
到期日
开始日期
结束日期
发票号码
描述(对于该字段,您必须编写正则表达式)
在此列表中,只需3个字段是必需的
发票日期
3个金额字段中有2个是必需的(第3个可以从其他2个中扣除:总金额 = 未税总额 + 税总额)
要利用《开始日期》和《结束日期》字段,您需要来自account-closing项目的OCA模块account_invoice_start_end_dates。
想了解此模块开发背后的全部故事,请阅读Akretion的博客文章。
目录
安装
此模块最重要的技术组件是将PDF转换为文本的工具。将PDF转换为文本并非易事。如本文博客文章中所述,不同的工具可以给出相当不同的结果。通常,基于PDF查看器的工具可以获得最佳结果,这排除了纯Python工具。但纯Python工具比基于PDF查看器的工具更容易安装。重要的是要理解,如果您更改PDF到文本工具,您肯定会得到略微不同的文本输出,这可能会迫使您更新字段提取规则,如果您已经配置了多个供应商,这可能是一项耗时的任务。
该模块支持5种不同的提取方法
PyMuPDF,这是MuPDF的Python绑定,MuPDF是一个轻量级的PDF工具包/查看器/渲染器,由Artifex Software公司以AGPL许可证发布。
pdftotext python库,这是pdftotext工具的Python绑定。
pdftotext命令行工具,该工具基于poppler,poppler是xpdf和Evince(Gnome的PDF阅读器)使用的PDF渲染库。
pypdf,这是最常用的Python PDF库之一。pypdf是纯Python解决方案,因此它非常容易在所有操作系统上安装。
PyMuPDF和pdftotext都提供了非常好的文本输出。到目前为止,我无法说哪个最好。pypdf通常提供较低质量的文本输出,但其优点是它是一个纯Python库,因此您将始终能够安装它,无论您的技术环境如何。
您可以选择一种提取方法,并仅安装该方法的工具/库。
安装PyMuPDF
通过pip安装
pip3 install --upgrade pymupdf
请注意,PyMuPDF不是一个纯Python库:它使用MuPDF,这是一种用C语言编写的。如果您的操作系统、CPU架构和Python版本在pypi上可用的python wheel(请检查pypi上的PyMuPDF wheel列表),则安装将顺利。否则,通过pip进行的安装需要MuPDF及其所有开发库来编译绑定。
安装pdftotext python库
要安装pdftotext python库,运行
sudo apt install build-essential libpoppler-cpp-dev pkg-config python3-dev
然后通过pip安装库
pip3 install --upgrade pdftotext
在Debian/Ubuntu以外的操作系统上,请遵循项目页面上的说明。
安装pdftotext命令行
要安装pdftotext命令行,运行
sudo apt install poppler-utils
安装pypdf
要安装pypdf python库,运行
pip3 install --upgrade pypdf
其他要求
此模块还需要以下Python库
regex与Python标准库中的re模块向后兼容,但具有附加功能。
dateparser 是一个功能强大的日期解析库。
dateparser 库自身依赖于正则表达式。因此,您可以使用以下命令通过 pip 安装这些 Python 库:
pip3 install --upgrade dateparser
dateparser 库与所有正则表达式库版本不兼容。截至 2024 年 2 月,dateparser 声明对正则表达式的版本要求为 !=2019.02.19, !=2021.8.27。因此,dateparser 的最新版本目前与最新版本的 regex 兼容。要了解您的环境中 regex 的版本,请运行:
pip3 show regex
配置
默认情况下,对于 PDF 到文本的转换,模块将按照 INSTALL 部分中提到的顺序尝试不同的方法:它将首先尝试使用 PyMuPDF;如果失败(例如,因为库没有正确安装),则将尝试使用 pdftotext python 库;如果这也失败,则将尝试使用 pdftotext 命令行;如果它也失败,最终将尝试使用 pypdf。如果这 4 种方法都不起作用,Odoo 将显示错误消息。
如果您想强制 Odoo 使用特定的文本提取方法,请转到菜单 配置 > 技术 > 参数 > 系统参数 并创建一个新的系统参数
键: invoice_import_simple_pdf.pdf2txt
值: 选择您想使用的方法的正确值
pymupdf
pdftotext.lib
pdftotext.cmd
pypdf
在此配置中,Odoo 将仅使用选定的文本提取方法,如果它失败,则将显示错误消息。
您可以在以下 屏幕录像 中找到有关如何配置每个供应商以及导入 PDF 发票的完整演示。
错误跟踪器
错误在 GitHub 问题 上跟踪。如果遇到问题,请检查您的错误是否已经报告。如果您是第一个发现它的人,请通过提供详细和受欢迎的 反馈 来帮助我们解决问题。
请勿直接联系贡献者以获取支持或帮助解决技术问题。
鸣谢
贡献者
Alexis de Lattre <alexis.delattre@akretion.com>
维护者
此模块由 OCA 维护。
OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并促进其广泛使用。
当前 维护者
此模块是 GitHub 上 OCA/edi 项目的组成部分。
欢迎您贡献力量。要了解更多信息,请访问 https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo14_addon_account_invoice_import_simple_pdf-14.0.4.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ce3c15101c0eb5843db3073a7cf4ff12c2905503c846b2be649b23471635506 |
|
MD5 | 291e43b6a4827e3fd274620f390a90d2 |
|
BLAKE2b-256 | 31c1b6e98152d4204002165a908cb1f71e9f1600a9717ea9286f1649b17297fc |