用于分析各种政府文件和一般PDF的库

zen_document_parser的Python项目详细描述


#zen document parser是从各种正式文档中提取数据的实用程序。它在幕后使用[pdfquery](https://github.com/jcushman/pdfquery)。

库允许文档的多个“变体”。例如,印度ITR-V文件的字段和布局略有不同,这取决于它是否在2013年、2014年生成,2015年等。


>查看下面的示例。
















































itr-v docs

`` python

itrvdocument

在实例化期间,您可以传入路径或类似文件的对象。
doc=itrvdocument('/path/to/itrv.pdf')

自动检测变量并执行所有
字段的提取,并在内部存储结果。
doc.extract()

遵循以下步骤:

-定义一个或多个“架构”,即“doc variant”子类,以便与文档的每个变体一起使用。
-在每个变体中,定义一个“check_for_match()”方法,该方法在成功解析文件时返回“true”。
-确保将“test_fields”定义为每个类的一个属性,该类是所有字段的列表“check_for_match()”中使用的名称。(目前出于优化目的,这是必需的,但在即将发布的版本中不是必需的。)
-定义表示文档的“doc”子类。在“variants”属性中,指定可能的变量。


``python


from zen_document廑parser.base import docfield,docvariant,document




(用于优化)
test_fields=['form_title']

form_title=docfield((30,300,500,380))
name=docfield((100,120,400,140.5))
address=docfield((150,90,650,110))

def check_for_match(self):
如果self.form_title='2014年申请表':
返回true
返回false



class variant2(docvariant):


name=docfield((70,140,350,160))
address=docfield((150,120,650,140))
pan no=docfield((150,80,650,100))

def check_for_match(self):
如果self.form_title=='2015-16年申请表':
返回true
返回false



myform类(文档):

variants=[variant1,variant2]


doc=myform('/path/to/form.pdf')
doc.extract()
print(doc.data.to_dict())
````


todo

-hanle数据类型规范
-处理强制/非强制字段。
-现在用户必须显式指定“测试字段”以进行优化。找到一种不需要的方法。
-在第一次引用它们时自动加载它们?` extract()`仍然可以一次批量加载所有字段。

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

推荐PyPI第三方库


热门话题
面向java语句的方法与面向表达式的方法   密码学如何在java中为json对象签名?   是否可以通过java程序知道给定卡夫卡消费群体的消费偏移量?   打印字符时出现java未知问号   java为JFrame设置背景色   在ubuntu中检查java版本时linux权限被拒绝   如何用java创建xml模式   java无法在远程服务器上运行Vaadin应用程序   java智能垃圾收集?   java如何在SpringMVC中设置缓存头?   在unix计算机上运行java应用程序a:>签名以输入内容   Java、Apache Commons配置XML属性   使用ArrayList调用Java未经检查的方法   在文本文件中查找并替换单词(Java GUI)   java Android Studio无法检测到JDK7或更新版本   java从socket的有效负载获取事件消息   安卓中java调用子类方法   java如何通过点击超链接来运行jar文件(Firefox)