自动排序和存档PDF帐单和报表

classify-bills的Python项目详细描述


分类账单

[几乎]自动排序和存档PDF账单 以及声明。

我每月收到大量的电子对账单:来自银行对账单 信用卡对账单更新保险单文件。我 把它们都存起来-它们不会占用太多空间,你永远不知道什么时候 你需要使用其中一个(我最近确实有一个案例,其中 18年前从一家银行开出的收据起了很大的作用, 但这是另一天的故事。

这么多收据的一个问题是它们的存储方式有助于 快速找到事物(甚至找到事物)。重命名每个 手锉坚持某种统一的惯例 周围的文件很快就会让人觉得无聊至极。

这就是分类账单脚本的用武之地。一切都过去了 新下载的帐单和执行以下操作:

  • 它试图找出每个文档所属的帐户。
  • 然后它会找出这个文档应该关联的日期 用
  • 最后,它根据set模式命名文档,并 把它放在正确的目录中。

把账单分类不是什么

它不是万能的。它不会下载你的声明 对你来说(考虑到不同的网站,这是一个更复杂的任务 存放这些文件)。也不会对那些 不要嵌入文本(有些地方会给你一个没有 文本)。

它也不是很聪明。它的核心是一个列表 正则表达式的。

不过,考虑到我每月收到的账单数量,在过去的几年里 多年来,它可能帮我省下了数小时的卑鄙无聊的时间。 工作,所以我认为这是一场胜利。

安装

使用pip安装

pip install classify_bills

安装后,分类账单应在您的路径中可用。

当直接或从github使用源代码时,请使用 运行分类账单调用python代码的shell驱动程序 正确。

目前,分类账单具有以下外部 依赖关系:

  • python 3.x
  • pdftotext程序(通常作为poppler包的一部分提供)

配置

分类账单是通过一组xml文件配置的,其中每个文件 定义特定票据类型的设置。那些文件应该放在 在配置目录中,可以指定 以下方式:

  • 通过-c命令行选项。
  • 通过环境变量$classify_bills_config_目录
  • 使用默认位置~/.classify_bills.conf.d

每个文件都定义了可能出现在 为该帐户考虑的订单。与帐单日期匹配的样式 还必须指定(并且必须匹配)以及模式 提取日期(通过strtime())。

package目录classify_bills.config.examples包含 几个例子。特别是,请参见 目录,它描述了配置的所有方面。

最后,可以通过设置禁用输出中的颜色 $classify_bills_disable_color环境变量。

创建新配置文件

一般来说,为一种新的票据增加支持的过程是有效的 以下方式:

  • 使用pdftotext检查给定的两个帐单的文本输出 帐户确定以下内容:
    • 文本中可用于唯一标识此 帐单种类(银行或服务提供商的名称、URL, 等)。最好有几个特定的模式来允许未来 同一提供程序中多个帐户之间的消歧 (例如,独立银行业务以及来自同一家银行的投资票据。
    • 可用于推断此帐单的日期的模式 关联。
    • 日期格式。
  • 创建一个新的XML文件(使用0-example.xml作为样板文件)。

不幸的是,这个过程不容易自动化,所以必须 手动操作,很痛苦。不过,这只需要做一次 每个帐户(即,直到提供程序决定更改 法案的格式因此打破了模式,但它也没有 经常发生)。

使用分类账单

运行分类账单相当简单。你也可以通过 单独的pdf文件或目录作为命令行参数。通过 默认情况下,它以干运行模式运行,不做任何更改。实际上 执行所有操作,用-f标志运行它。

已成功检测到的文件将移动到层次结构中 在输出目录下(使用-o标志指定 或者通过环境变量$classify_bills_output_directory。这个 脚本永远不会覆盖目标中的任何现有文档 目录(除非强制通过-w标志)。

未来工作

目前,使用该工具最痛苦的方面是手动操作 每种票据类型的模式配置。有几个主意 如何使之更简单:从查找和解析 使用神经网络从 账单。这可能是今后工作的一个有趣方向。

贡献

欢迎您通过提交 针对不同机构或通过改进 编码和添加功能。-()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将spring j_spring_安全检查迁移到登录   log4j2中自定义appender中AppConfig的java问题   在将java转换为Json时是否可以忽略内部类名和变量   用java将PDF文件转换为十六进制格式   java将值从AsyncTask返回到主类   java如何导入带有部署变量类名的静态函数?   java Spring Boot@ConfigurationProperties未从环境检索属性   java为什么API调用需要80毫秒的延迟才能到达控制器(在Google应用程序引擎中)?   XML配置中MarshallingMessageConverter中的java设置MarshallTo获取无效属性“MarshallTo”   java从群中获取facebook帖子   @ComponentScan的java excludeFilters不起作用   java将单选按钮值从一个类传递到另一个类   java使JTextArea在Swing中可滚动   java Android增强现实应用程序:将球坐标旋转到设备坐标系