使税务表单现代化并为新的税务表单接口提供一个api

opentaxforms的Python项目详细描述


OpenTaxForms打开并自动化美国纳税表–它读取PDF纳税表 (目前仅来自irs.gov,而非州政府表格),将其转换为更多 提供完整的HTML5,并为开发人员提供数据库和API 创建自己的税务申请。转换后的表格将可用 测试(并最终使用) opentaxforms.org

  • PYPI

    pypi version

  • 许可证

    GNU AGPLv3

  • 安装

    pip安装opentaxforms

  • 外部依赖关系

pdf2svg

  • Github

    • 代码
    • [问题跟踪链接即将发布]
    • [里程碑链接即将发布]
  • 生成状态

    构建状态

  • 表单状态

    脚本为每个表单报告一个状态。当前状态类别 为:< > >

    • 布局意味着文本框和复选框–它们不应该重叠。
    • 参考文献是对其他形式的参考,它们都应该被认可 (即,在所有表单的列表中)。
    • math是计算字段及其依赖项–每个计算字段 字段应该至少有一个依赖项,否则是什么 计算自?

    每个状态错误在日志文件中都有相应的警告,因此 很容易找到。每个错误修复都可能减少 多种形式。

    1040表单状态 列表

  • API

    restful api是只读的,它提供了 表单域:数据类型、页面上的大小和位置以及域中的角色 像美元和美分这样的分组字段,同一行上的字段, 同一表中的字段、同一页上的字段和字段 涉及相同的公式。api还将提供状态 每个表单的信息和检测仪反馈。

    [API文档即将发布,现在请参阅 测试/运行apiclient.sh]

  • 工作原理

    大多数国税局纳税申报表都将所有可填写字段信息嵌入 XML表单体系结构 (xfa)格式。opentaxforms的python 脚本从每个pdf表单中提取xfa,并进行解析:

    • 字段之间的关系(如美元字段和分字段;字段 在同一行上;表的列和行)。
    • 数学公式,包括计算的字段与用户输入的字段 (例如"从第35行减去第37行。如果第37行大于 第35行,输入-0-"。
    • 其他表格的参考资料

    所有这些信息都存储在数据库中(可选 postgresql或默认值 sqlite)并根据 restful 应用程序编程接口。对于每个税务表单页面,都有一个html表单(带有javascript表达 公式)生成并覆盖在 原始PDF。javascript将所有用户输入保存到本地/web 通过 basil.js。当页面是 加载后,将检索这些值。价值由纳税年度决定, 表格编号(如1040)和xfa字段id(很快纳税人名称 我也给我的孩子交税)。测试人员将对页面图像进行注释 带框和评论,通过 注释性.js。900人中的一些+ IRS表格没有嵌入XFA(如2016年1040表格附表 A)最终,这些表单可能会更新为包含xfa,但是直到 那么,最好的自动化方法可能是 OCR (光学字符识别)。ocr也许不是那么愚蠢 一般的方法,特别是对于州(nj,ny等)形式 通常不基于XFA。

  • 待办事项

    • 将较低级别的待办事项移动到GitHub/问题。
    • 重构到一个不太脚本化的架构,它将扩展到 更多的开发商。[建筑请]
    • 切换到保存文本(而不是 将文本转换为路径),可能是pdfjs,这样测试人员可以 轻松复制和粘贴表单中的文本。[可复制文本]
    • ExtractFilableFields.py应该是名为 XFADUMP?这可能为 OCR的努力。[xfadump]
    • 通过 预处理步骤。[格式字典]
    • 提供整个表单HTML界面(当前显示每个页面 分别)。[formassinglehtmlpage]
    • 包括说明书和出版物,特别是摘录 说明中的工作表。[工作表]
    • 添加处理US状态表单的功能。[状态]
    • 修复无数的错误,特别是在包含表的表单中(请参见 [问题]
    • 不要在单独的文件中查找 形式。[参考嵌入计划]
    • 将dirname命令行选项分隔成 pdfinputdir、htmloutputdir。[分离器]

0.5.7(2017-02-24)

  • 简化PDF格式的提取[通过心外膜]。
  • 命令:添加"除法"命令。
  • CMDS:对字段"realUnit"为的字段将常量视为"enter"命令 "比率"。
  • CMDS:临时:处理比率字段对[整数和小数字段] 作为美元和美分字段。
  • 表单:临时:取消复选框字段的数学运算。
  • 表单:bugfix:fix'multiple repeats'regex error via ut.compactify.
  • 改进表单命名,包括main.indicateprogress中的错误修复。
  • PY3兼容性的错误修复:
  • 表单:删除Unicode调用。
  • 配置:异常不可输入。
  • 链接:查找字节,而不是字符串。
  • linting:删除重新导入。
  • ut:设置根记录器的日志级别。
  • 错误修复:常量[预填充]字段转换为美分。
  • 错误修复:从后台转换时恢复绝对位置 图像到IMG元素。
  • 参考文献:将"section"添加到nonformcontexts。
  • refs:添加ScheduleContext以便更准确地将ref添加到计划。
  • 参考:添加用于将计划分配给表单的insameFamily规则。
  • refs:禁止在以后使用的变量中使用unicode标点字符 文件名。
  • 重新启用测试xfa

0.5.6(2017-02-20)

  • 将py35 testenv添加到tox设置。
  • 简化PDF格式的提取[通过心外膜]。
  • 使用前确保操作系统已导入[由心外膜导入]。
  • 许多小的调整[由心外膜]。
  • 合并分支"避免转储pdf" git://github.com/perimosocordiae/opentaxforms进入 心周避免倾倒pdf
  • 合并分支"小调整" git://github.com/perimosocordiae/opentaxforms进入 心周小调整
  • 自述从今以后创建。之前。最终承诺 释放。

0.5.5(2017-02-18)

  • 到蟒蛇3号的港口-谢谢你的心周![按心周分类]
  • Windows端口:如果符号链接失败,请复制文件。
  • Windows端口:替换文件路径中的斜线,并调用os.path.join。
  • 测试:删除了xfa测试,因为它当前失败的原因是 不重要的Unicode差异
  • 测试:将测试从最简单的重新排序为更复杂的。
  • 错误修复:日志记录:用处理程序替换basicconfig,这些处理程序是 测试之间可替换,因此每个测试都有自己的日志文件。
  • 错误修复:os.path.join忽略前导斜杠前的任何目录。
  • 错误修复:即使在api测试之后也会重新设置,因此后续的('steps')测试 可以配置。
  • 修正:修正yaml语法-travis不喜欢前面的标签 心周膜]。

0.5.4(2017-02-14)

  • 在脚本步骤之前,在Travis中安装pdf2svg。

0.5.3(2017-02-14)

  • 测试:将日志文件中的非警告行添加到输出[方便 知道travis构建出了什么问题;对新用户有帮助
  • 2017年2月13日meetup.com/pug-ip sprint的2个补丁:
  • 依赖于readme,readme.md[作者:Polera–谢谢詹姆斯!
  • 在ut.run中修正了错误[由perimosocordiae-谢谢cj!

0.5.2(2017-02-13)

  • 启动到Windows的端口。

0.5.1(2017-02-13)

  • 错误修复:跟踪:rootforms在test-opentaxforms中必须是同一类型 和主。

0.5.0(2017-02-13)

  • css,模板:添加最小的测试仪界面。
  • 摘录:使神秘的形式成为可注释的。
  • html:将pdf链接添加到html页面。
  • main:fix log.name in indicatateprogress[仍引用上一个 形式:
  • 命令行:-f现在采用多种形式,以逗号分隔。
  • 命令行:-c现在表示usecaches[不是ignorecaches],因此 默认运行[避免PINT注册表错误]。
  • 通过添加py test runner,使"setup.py test"再次工作。
  • 将PYPI版本徽章添加到readme.md.
  • 删除未使用的数据库功能。
  • 错误修复:只导入跨模块全局变量,不分配。
  • 将logprefix添加到配置。
  • 将未设置的函数添加到config和ut,以便在测试之间拆卸。
  • setup.py.

0.4.19(2017-01-24)

  • 添加Pylint配置文件。
  • 修复或消除所有Pylint错误。
  • 从ut.py中删除未使用的代码。
  • 使用另一个项目的pylintrc[pylint config file]作为开始 指向减少误报。
  • 使线头纹理更细[pylintrc ut for ut.py,pylintrc for 其余代码]。
  • 将绒线与TOX整合。
  • 生成失败仅限于linting错误,而不是警告。

0.4.18(2017-01-19)

  • 测试:在 试验/ < < /LI>
  • 测试:添加脚本以仅运行API测试。
  • 测试:使API测试打印反馈。
  • 修复了所有的linting错误[根据vim/syntastic][只是错误, 不是警告]。
  • 运行pep8ify。
  • mv opentaxforms.py->;main.py.
  • main.py:删除sys.setDefaultEncoding[并重新加载]。
  • 从毒物环境中删除无意义的路径。
  • readme.md修复/更新。landscape.io建议。

0.4.17(2017-01-17)

  • 将cmds.computemath移动到form.computemath。
  • 重构cmds.computeMath以减少函数长度:
  • 将句子级(指令级)分析移到类分析器中。
  • 创建类命令分析器。

0.4.16(2017-01-13)

  • linting via landscape.io,包括缩短长线、删除 未使用的变量,并重构一些长函数。
  • 修复了所有损坏的文档。
  • 现在可以导入跨模块全局变量log和cfg。

0.4.15(2017-01-09)

  • 错误修复:ignorecaches选项现在可以工作。
  • 布吉X:如果dirname为none,则跳过表单设置。
  • 错误修复:ut.exists现在对尾随斜杠不敏感。
  • 测试:从相对路径移动到绝对路径,因此例如py.test从 超出测试/方向。
  • 测试:重新组织测试/dir:test_u*subdirs是一次性的,测试-* 不,
  • test/test_opentaxforms.py:命令行选项已更改,并且 展开。
  • test/test_opentaxforms.py:重构testotfsteps,添加 test_运行_1040_xfa,最后向[pytest]添加一个脚本测试 自动测试。
  • test/forms/f1040.js,test/run_HTML5.sh:添加casperjs脚本[测试 F1040 HTML文件]和shell脚本[用于上下文]。
  • 将test/readme.md作为指南添加到test/目录。
  • 探测幽灵的访问,casperjs in.travis.yml,希望是 HTML5测试的未来集成。
  • py:在main中,将表单摘要代码移到else中 块,
  • 缓存form.pdfinfo的结果以加快测试运行。
  • 添加内部选项以计算重叠[对于布局框;当前 效率低下,因此成本高昂]。
  • 更新1040目标输出文件以修复损坏的测试。
  • 清除opentaxforms.py/main。

0.4.14(2016-12-31)

  • mv math.py cmds.py:解决tox生成失败[tox.random 导入py.math并改为获取我们的math.py]。
  • 显然,oops必须包含travis构建成功的自述文件。
  • setup.cfg:git flow release已经标记了版本,所以我们不希望 bumpversion这样做,否则git流拒绝释放。

0.4.13(2016-12-30)

  • gitignore release.sh临时文件,因此它们不会影响git状态。
  • 将1100行main的大部分移到四个新文件中。
  • 添加窗体类。
  • 域.py->;irs.py.
  • extractfillablefields.el从dict派生。
  • 将RST格式的文件合并到单个自述文件中。
  • 注意到标记自述文件没有在pypi上呈现,正在修复[修复的一部分] 在release.sh]中。

0.4.12(2016-12-23)-将箭头键绑定到下一页/上一页链接[用于演示 视频]。-[release.sh在测试时保持未跟踪状态。]

0.4.11(2016-12-21)-允许通过call或 命令线。-外部处理的输出表单状态。清理 "导入*"。-添加清理脚本。-合并缺失和虚假 分类到窗体状态消息中。-使用bumpversion作为 Cookiecutter可以。

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

推荐PyPI第三方库


热门话题
if语句Java中if(x(y))中x的结果类型是什么?   java TestNG没有执行套件中的所有测试类   java当使用自定义arrayadapter在listview中单击edittext时,会发生错误   java keytool命令的import和importcert之间有什么区别   java如何在流中使用PartitioningBy来查找高于或低于平均值的值?   java在从另一个Jtable中选择行时显示Jtable中的数据   java使用JOptionPane按钮创建条件状态   安卓“java.lang.UnsatisfiedLinkError:未找到本机方法:”如果删除头文件,可以修复错误?   java如何实现具有泛型关系的多态JPA实体   java当关闭相关(相同)的entityManager时,entityManager以前找到或获取的entites是什么?   运行应用程序时发生java UnsatifiedPendencyException异常   java如何在jfree折线图中添加注释