2015-06-26 76 views
1

正如標題所示,我有一個文件,需要將每個句子提取到Excel中的單元格,每個單元格一個。從PDF文件中提取每個句子到Excel中的單獨單元格?

句子提取可以很簡單,只要找到下一個". "並提取到一個單元格。問題是除了MATLAB之外,我真的不知道任何編程語言(我是機械工程師)。

如果它可以忽略真棒的表格/圖片,如果沒有的話,只要它遇到表格/圖片時不會搞砸。我知道我沒有給你很多工作,但任何幫助表示讚賞。

回答

0

你沒有告訴,你希望你的「句細胞」被layouted ...

  1. 簡短的回答:這是不可能的。

  2. 擴展答案:這是相當困難的,它也取決於您的特定PDF文件。有些PDF文件並不適合的文本提取。

  3. 你可以嘗試下面的命令,它試圖抓住每一個句子到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的:

    Screenshot of 2-page PDF

    以上在Linux和Mac OS X.命令作品(!對不起,沒時間拿出一個等效的Windows版本)

    要了解(和IF)爲 PDF此命令的作品,往前走一步一步:

    • 執行第一線自身作爲第一次嘗試(擺脫最終\牌子,上面是一個續行標記僅限於)。該第一行將僅從PDF中提取文本並將其打印在標準輸出通道上。如果這不起作用,所有其他線路也不會。參數-x .. -y .. -W .. -H ..通過選擇左上矩形座標角(xy)和頁面區寬度(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中。

相關問題