Python 解析PDF时忽略表
我想解析pdf并删除所有表、图像。我使用PyPDF2和pdfminer解析pdf,但它也解析表的内容以及其他内容。我尝试将pdf转换为xml(使用pdfminer)以获得某种结构,这样我就可以忽略表。但我没有得到有用的结构。我得到了不同id的元素,就像这样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属于这个表,以便我
<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@gosgenqmy\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页文本状态参数和运算符。