我想解析pdf并删除所有表格,图片。我已经使用PyPDF2和pdfminer来解析pdf,但是它也可以解析表的内容以及其他内容。我试图将pdf转换为xml(使用pdfminer)以获得某种结构,以便可以忽略表。但是我没有有用的结构。我得到了具有不同ID的元素
<textbox id="1" bbox="56.760,740.908,82.824,751.816">
我知道,我可以使用这些id属性忽略该表,但是我有大量的文档,使用这种方法,我必须手动检查属于表的id,以便我可以忽略它。我还有其他方法可以自动执行此任务吗?
Here is示例pdf和xml文件。
答案 0 :(得分:0)
您可以使用pdfreader提取包含“ pdf markdown”的文本,然后使用您喜欢的工具(如正则表达式)解析它以跳过表格:
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 :(得分:0)
我也遇到过类似的问题。我想忽略表格和图表。由于我的表格和图表主要包含数字数据,因此选择了以下方法。 1.使用tika提取文本。 2.将文本分成句子。 3.使用停用词作为参考,并过滤掉至少包含一个停用词的句子。(一个句子没有任何介词就不可能)
这在很大程度上解决了问题。同样,使用这种方法,我们可以在一定程度上消除页脚,段落标题
答案 2 :(得分:0)
你能给我一些关于如何使用正则表达式跳过表格的指示吗?我在执行上面的代码时得到以下结果。
0.750000 0.000000 0.000000 -0.750000 0.000000 841.920044 厘米
q
0.000000 0.000000 0.000000 rg
BT
0 吨
/F1 14.720600 Tf
1 0 0.000000 -1 96.000000 109.919998 Tm
[(L) -0.851563 (i) -0.605469 (s) -12.000000 (t) 16.000000 ( ) -0.074219 (o) -0.597656 (f) -0.406250 ( ) -0.079040040.040p.04 ) 6.000000 (o) 7.000000 (r) -0.468750 (t) -0.679688 (a) -0.652344 (b) 6.000000 (l) -0.605469 (e) -7.000000 (e) -7.000000.0) (0.679688 (a) -0.652344 (b) -0.605469 (e) -7.000000.0) (0.07) 07) (07) 07 (0) -0.679688 (i) -0.605469 (n) 6.000000 (g) -6.000000 ( ) -0.074219] TJ
ET
问
q
0.000000 0.000000 0.000000 rg
BT
0 吨
/F2 14.720600 Tf
1 0 0.000000 -1 502.559998 109.919998
[( ) -0.074219] TJ
ET