Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析PDF时忽略表_Python_Pdf_Xml Parsing_Pypdf2_Pdfminer - Fatal编程技术网

Python 解析PDF时忽略表

Python 解析PDF时忽略表,python,pdf,xml-parsing,pypdf2,pdfminer,Python,Pdf,Xml Parsing,Pypdf2,Pdfminer,我想解析pdf并删除所有表、图像。我使用PyPDF2和pdfminer解析pdf,但它也解析表的内容以及其他内容。我尝试将pdf转换为xml(使用pdfminer)以获得某种结构,这样我就可以忽略表。但我没有得到有用的结构。我得到了不同id的元素,就像这样 <textbox id="1" bbox="56.760,740.908,82.824,751.816"> 我知道,我可以使用这些id属性忽略这个表,但我有一大组文档,使用这种方法,我必须手动检查哪个id属于这个表,以便我

我想解析pdf并删除所有表、图像。我使用PyPDF2和pdfminer解析pdf,但它也解析表的内容以及其他内容。我尝试将pdf转换为xml(使用pdfminer)以获得某种结构,这样我就可以忽略表。但我没有得到有用的结构。我得到了不同id的元素,就像这样

 <textbox id="1" bbox="56.760,740.908,82.824,751.816">

我知道,我可以使用这些id属性忽略这个表,但我有一大组文档,使用这种方法,我必须手动检查哪个id属于这个表,以便我可以忽略它。我想知道有没有其他方法可以自动完成这项任务

pdf和xml文件示例。

您可以使用提取包含“pdf标记”的文本,然后使用您喜爱的工具(如正则表达式)对其进行解析,以跳过表格:

from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

pdf_markdown = ""

try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        viewer.next()
except PageDoesNotExist:
    pass

text = my_cool_tables_parser(pdf_markdown)

您可以使用提取包含“pdf标记”的文本,然后使用您喜欢的工具(如正则表达式)对其进行解析以跳过表格:

from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

pdf_markdown = ""

try:
    while True:
        viewer.render()
        pdf_markdown += viewer.canvas.text_content
        viewer.next()
except PageDoesNotExist:
    pass

text = my_cool_tables_parser(pdf_markdown)


我曾面临过类似的问题。我想忽略表格和图表。由于我的表格和图表大多是数字数据,我选择了下面的方法。 1.使用tika提取文本。 2.把课文分成几个句子。 3.使用stopwords作为参考,过滤掉那些不包含至少一个stopwords的句子。(一个句子没有一个介词是不可能的)


这在很大程度上解决了这个问题。此外,我们还可以使用这种方法在一定程度上去除页脚、段落标题

我曾经遇到过类似的问题。我想忽略表格和图表。由于我的表格和图表大多是数字数据,我选择了下面的方法。 1.使用tika提取文本。 2.把课文分成几个句子。 3.使用stopwords作为参考,过滤掉那些不包含至少一个stopwords的句子。(一个句子没有一个介词是不可能的)


这在很大程度上解决了这个问题。此外,我们还可以使用这种方法在一定程度上去除页脚、段落标题。你能给我一些关于如何使用正则表达式跳过表格的建议吗。我在执行上述代码时得到以下结果。
0.750000 0.0000000.000000-0.750000 0.000000 841.920044厘米 Q 0.0000000.0000000.000000RG 英国电信 0 Tr /F1 14.720600 Tf 100.000000-196.000000 109.919998 Tm (三)0.0741219(o)0.5923414(b)0.65234(b)0.65234(b)0.6523404(b)6.0 0 0 0.6(f)0.597656(f)0.406250(f)0.406250(f)0.40406250(f)0.597(f)6-0.406250(f)7-0.406250(f)0.406250(7)5(7)5(7)5)5(7(7)5)50(0.7-0.406250(7)50(7(7)5)50(7(7)5)5)0.7(7(7(7)5)50(7(f)5)5)5)0.7(7-0-0.7(7(7(7)5)5)5)7(7(7)5)50(7(7)5)5)600万(g)-600万(g)-0.074219]TJ ET Q Q 0.0000000.0000000.000000RG 英国电信 0 Tr /F2 14.720600 Tf 100.000000-1502.559998 109.919998 Tm [()-0.074219]TJ
ET

你能给我一些关于如何用正则表达式跳过表的建议吗。我在执行上述代码时得到以下结果。
0.750000 0.0000000.000000-0.750000 0.000000 841.920044厘米 Q 0.0000000.0000000.000000RG 英国电信 0 Tr /F1 14.720600 Tf 100.000000-196.000000 109.919998 Tm (三)0.0741219(o)0.5923414(b)0.65234(b)0.65234(b)0.6523404(b)6.0 0 0 0.6(f)0.597656(f)0.406250(f)0.406250(f)0.40406250(f)0.597(f)6-0.406250(f)7-0.406250(f)0.406250(7)5(7)5(7)5)5(7(7)5)50(0.7-0.406250(7)50(7(7)5)50(7(7)5)5)0.7(7(7(7)5)50(7(f)5)5)5)0.7(7-0-0.7(7(7(7)5)5)5)7(7(7)5)50(7(7)5)5)600万(g)-600万(g)-0.074219]TJ ET Q Q 0.0000000.0000000.000000RG 英国电信 0 Tr /F2 14.720600 Tf 100.000000-1502.559998 109.919998 Tm [()-0.074219]TJ
ET

请帮助共享my_cool_tables_解析器函数code@gosgenq
my\u cool\u tables\u parser
是这里的自定义解析器。你可以给我一些关于如何用正则表达式跳过表的建议吗。我在执行上述代码时得到以下结果。0.750000.0000000.000000-0.750000.000000 841.920044厘米q 0.0000000.0000000.000000 rg BT 0 Tr/F1 14.720600 Tf 1 0.000000-1 96.000000 109.919998 Tm[(L)-)-6.000000()-0.074219]TJ ET q 0.000000 0.0000000.000000 rg BT 0 Tr/F2 14.720600 Tf 1 0.000000-1 502.559998 109.919998 Tm[()-0.074219]TJET@gosgenq阅读第9.3页文本状态参数和运算符。请帮助共享my_cool_tables_解析器函数code@gosgenq
my\u cool\u tables\u parser
是这里的自定义解析器。你可以给我一些关于如何用正则表达式跳过表的建议吗。我在执行上述代码时得到以下结果。0.750000.0000000.000000-0.750000.000000 841.920044厘米q 0.0000000.0000000.000000 rg BT 0 Tr/F1 14.720600 Tf 1 0.000000-1 96.000000 109.919998 Tm[(L)-)-6.000000()-0.074219]TJ ET q 0.000000 0.0000000.000000 rg BT 0 Tr/F2 14.720600 Tf 1 0.000000-1 502.559998 109.919998 Tm[()-0.074219]TJET@gosgenq阅读第9.3页文本状态参数和运算符。