从PDF文件中提取每个句子到Excel中的单独单元格?

正如标题所示,我有一个文件需要将每个句子提取到Excel中的单元格,每个单元格一个。

句子提取可以像find下一个". "一样简单,并提取到一个单元格。 问题是除了MATLAB之外,我真的不知道任何编程语言(我是机械工程师)。

如果它可以忽略表格/图片的真棒,如果没有,它可以很好,只要它遇到一个表/图片时不会搞砸。 我知道我没有给你很多工作,但任何帮助表示赞赏。

你没有告诉你,你想如何把你的“句子单元”展开…

  1. 简答:这是不可能的。

  2. 扩展答案:这是相当困难的,也取决于您的具体PDF文件。 一些PDF文件根本不适合文本提取。

  3. 你可以尝试下面的命令,它试图把每个句子都捕获到一个CSVtypes的表中(只有一列,行数等于总句数)

     pdftotext -layout -x 10 -y 20 -W 400 -H 490 the.pdf - \ | tr "\\n" " " \ | perl -pe 's#\f# #g' \ | perl -pe 's#\. #.\n#g' \ | perl -pe 's#\? #?\n#g' \ | perl -pe 's#\! #!\n#g' \ | sed 's#^#"#' \ | sed 's#$#",#' \ | tee myvalues.csv 

    这个例子适用于我创build的样本2页PDF来快速testing我的上述命令。 PDF的屏幕截图:

    2页PDF的截图

    以上命令适用于Linux和Mac OS X. (对不起,没有时间想出一个等效的Windows版本!)

    要理解这个命令如何(和IF)为您的 PDF工作,一步一步前进:

    • 一次尝试执行第一行 (仅删除最后的\符号,这是一个行连续标记 )。 该第一行将仅从PDF中提取文本并将其打印在标准输出通道上。 如果这不起作用,所有其他线路也不会。 -x .. -y .. -W .. -H ..参数试图通过select一个左上angular的矩形坐标angular( xy )以及页面区域宽度( W )和高度( H )来限制正好在该区域上的文本提取。

    • 在第二次尝试中执行前两行 (在第一行保留行连续标记,摆脱第二行上的标记)。 第二行从第一行取出输出,并用空格字符replace每个换行符。 因此,您将在一行中拥有一个页面的所有内容。

    • 在第三次尝试中执行前三行(第一行和第三行上保留行连续标记,在第三行上除去标记)。 第三行从前两行输出,并用空格字符replace每个换页字符。 这些换页字符可能会出现在分页符出现的原始输出中,有时在一个句子中。 (或者,您可以将-nopgbrk添加到原始pdftotext命令中,以避免插入分页符。)因此,您将在一行中包含所有页面的所有内容。

    • 最后,执行上面给出的所有行 。 第四行代替所有的事件. (冒号后跟一个空格)换行符。 第五行和第六行打破由问号和惊叹号结束的句子。 第七行和第八行用行结束,用逗号结束每一行。 最后一行将结果input到文件myvalues.csv

    这是输出结果的外观:

     "this is a paragraph.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a sentence.", "this is a paragraph.", "this is a sentence.", "this is a sentence.", "this is a sentence.", [....] "this is a sentence.", 

如果命令按照您的要求工作,它将返回一个CSV(逗号分隔值)文本文件。 这种types的文本文件可以很容易地导入到Excel中。