2010-01-22 107 views
20

倒也乾脆,我要撕出的文本多個PDF的(相當多其實)爲了在SQL數據庫中堅持其之前分析的內容。提取從PDF文件在C#中的文本

我發現了一些非常粗略的免費C#庫,這種工作(最好的一個使用iTextSharp),但有很多格式錯誤和一些字符亂碼和很多時間有空格('')EVERYWHERE - 在每個字母之間,每個字母之間有很大的塊,佔用幾行,這一切似乎都是隨機的。

是否有這樣做的任何簡單的方式,我完全可以俯瞰(很有可能!),或者是一個艱鉅的任務的位是涉及到將提取的字節值到信可靠?

乾杯,

鄧肯

+0

參見http://stackoverflow.com/q/10982156/292060 – goodeye 2016-07-29 01:20:22

回答

9

你可以看看this article。它基於優秀的iTextSharp圖書館。

+0

是啊,這是有一個我使用,雖然不是非常可靠,但是非常好。 但是,在下面看Tarydon的答案解釋了爲什麼,實際上它可能是我要找到的最好的! 乾杯 – 2010-01-22 10:43:35

+1

雖然iTextSharp圖書館是一個很棒的圖書館,但它並不是免費的商業目的。不要忘了細讀https://sourceforge.net/p/itextsharp/itextsharp/ci/ed0d02ecca2a17b028b1f40b885efac41886b7ed/tree/src/notice.txt – 2017-01-24 10:18:51

17

有可能是在可靠地做一些這方面的困難。問題在於,PDF是一種演示文稿格式,它重視良好的版式。假設您只想輸出一個單詞:點擊

一個PDF渲染引擎可以輸出這2個獨立的呼叫,在這個僞代碼所示:

moveto (x1, y); output ("T") 
moveto (x2, y); output ("ap") 

這是因爲字距(字母間的間距)的默認要做的字母之間T和a可能不被渲染引擎接受,或者它可能會在字符之間添加或刪除一些微距以獲得完全對齊的線條。這最終導致的結果是,在PDF中找到的實際文本片段通常不是完整的單詞,而是其中的一部分。

+1

從PDF中提取文本的潛在困難的優秀描述。 – Lunatik 2010-12-24 10:12:04

1

您可以嘗試Docotic.Pdf library(聲明:我奇蹟位工作),以從PDF文件中提取文本。圖書館使用一些啓發式方法來提取漂亮的文字,而文字間的字母之間沒有不必要的空格。

請看一看,顯示how to extract text from PDF的樣本。

2

你可以試試Toxy,在.NET中的文本/數據提取框架。在Toxy 1.0中,PDF將被支持。詳情請訪問http://toxy.codeplex.com

+0

-1這與PDF(尚未)有關。你可能會告訴我們訪問http://www.websitethatplanetshavingcodetoextracttextfrompdfsoneday.com – 2014-02-04 20:07:06

+1

我說過了。無論如何,你會很快看到它。我會在六月之前提供。 – 2014-02-22 23:26:44

+1

Toxy 1.0在這裏。它現在支持PDF – 2014-06-11 02:57:19

0

如果您正在尋找「免費」替代品,請查看PDF Clown。我個人已經使用了基於iFilter的方法,並且它可以很好地工作,以便您可以輕鬆地支持其他文件類型。示例代碼here

9

看看提卡在DOTNET的,可通過的NuGet: https://www.nuget.org/packages/TikaOnDotnet.TextExtractor/

這是圍繞着極其良好的Tika Java庫的包裝,使用IKVM。非常易於使用,可處理除PDF以外的各種文件類型,包括舊式和新式辦公格式。它會自動選擇基於文件擴展名的解析器,所以它一樣簡單:

var text = new TextExtractor().Extract(file.FullName).Text; 
0

如果你正在處理與數據導入到數據庫的目的PDF文件,那麼我建議考慮ByteScout PDF Extractor SDK。一些有用的功能包括:

  • 表檢測;
  • 將文本提取爲CSV,XML或格式文本(使用可選佈局恢復);
  • 支持正則表達式的文本搜索;
  • 低級別的API來訪問文本對象

免責聲明:我參加與ByteScout