正如標題所示,我有一個文件,需要將每個句子提取到Excel中的單元格,每個單元格一個。從PDF文件中提取每個句子到Excel中的單獨單元格?
句子提取可以很簡單,只要找到下一個". "
並提取到一個單元格。問題是除了MATLAB之外,我真的不知道任何編程語言(我是機械工程師)。
如果它可以忽略真棒的表格/圖片,如果沒有的話,只要它遇到表格/圖片時不會搞砸。我知道我沒有給你很多工作,但任何幫助表示讚賞。
正如標題所示,我有一個文件,需要將每個句子提取到Excel中的單元格,每個單元格一個。從PDF文件中提取每個句子到Excel中的單獨單元格?
句子提取可以很簡單,只要找到下一個". "
並提取到一個單元格。問題是除了MATLAB之外,我真的不知道任何編程語言(我是機械工程師)。
如果它可以忽略真棒的表格/圖片,如果沒有的話,只要它遇到表格/圖片時不會搞砸。我知道我沒有給你很多工作,但任何幫助表示讚賞。
你沒有告訴,你希望你的「句細胞」被layouted ...
簡短的回答:這是不可能的。
擴展答案:這是相當困難的,它也取決於您的特定PDF文件。有些PDF文件並不適合的文本提取。
你可以嘗試下面的命令,它試圖抓住每一個句子到CSV型表(的領域只有一個列,行數相當於總句子數:
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
本例將sample 2-page PDF這是我創建的快速測試我上面的命令截圖PDF的:
以上在Linux和Mac OS X.命令作品(!對不起,沒時間拿出一個等效的Windows版本)
要了解(和IF)爲您 PDF此命令的作品,往前走一步一步:
執行第一線自身作爲第一次嘗試(擺脫最終\
牌子,上面是一個續行標記僅限於)。該第一行將僅從PDF中提取文本並將其打印在標準輸出通道上。如果這不起作用,所有其他線路也不會。參數-x .. -y .. -W .. -H ..
通過選擇左上矩形座標角(x
和y
)和頁面區寬度(W
)以及高度(())來去除頁腳和頁眉(如PDF示例中的頁碼) H
)限制文本在該區域的提取。
執行前兩行在第二次嘗試(存續行標誌在第一行,第二擺脫標記)。第二行取第一行的輸出,並用空格字符替換每個換行符。因此,您將在一行中包含頁面的所有內容。
執行前三行在第三次嘗試(保持在第一和seconod線續行標誌,就上三擺脫標記)。第三行從前兩行輸出,並用空格字符替換每個換頁字符。這些換頁符可能會在發生分頁符時在原始輸出中出現,有時會在一個句子中出現。 (或者,您可以將-nopgbrk
添加到原始的pdftotext
命令中,以避免全部插入分頁符。)因此,您將在一行中包含所有頁面的所有內容。
最後,執行所有行,如上所述。第四行用換行符替換所有出現的.
(冒號後跟一個空格)。第五行和第六行打破由問號和驚歎號結束的句子。第七行和第八行將行包裹成引號,並用逗號結束每行。最後管線管結果到一個文件中,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 (逗號分隔值)文本文件。這種類型的文本文件可以很容易地導入到Excel中。