2010-11-28 64 views
5

我必須從特定矩形區域內的pdf文檔中提取文本。工作流程如下。首先將pdf轉換爲jpg圖像。然後用戶在圖片頂部繪製選擇矩形。然後我需要從該選擇區域內的pdf文檔中提取所有文本。任何建議什麼免費的pdf庫可以從C#訪問使用?如何在特定的矩形區域內從pdf文檔中提取文本?

+0

https://stackoverflow.com/q/20606467/1271037 – dovid 2017-08-13 10:31:22

+0

可能重複[使用iTextSharp獲取指定區域中包含的文本](https://stackoverflow.com/questions/20606467/get-text-occurrences-contained-in-a-specified-area-with-itextsharp) – bfontaine 2017-08-21 10:11:12

回答

4

我同意,OCR不是在這裏使用的方法。您需要一個可以提取文本以及邊界框座標的PDF庫。

QuickPDF是一個商業圖書館(www.quickpdf.com),可以提取所需的信息,價格合理,價格爲249美元。 http://www.quickpdflibrary.com/help/quickpdf/DAExtractPageText.php是您正在尋找的功能。這將提取整個頁面的文本,然後您將需要使用簡單的Point和/或Rectangle函數將文本限制到您選擇的矩形。

我不認爲iText根據我的研究有這種能力。

你也應該閱讀How to extract text from a PDF?

1

一旦將PDF光柵化爲JPEG圖像以使用文本識別(OCR)提取選定區域內的文本,我會建議您。這裏有一個關於.NET的OCR庫的article。就從PDF中提取文本而言,here's an article說明了如何實現或多或少的可靠性。問題將是如何識別用戶在選定矩形內的文本。

+0

此錯誤不是一種選擇。我需要100%的準確性。 ocr不是100%準確的。除了一個pdf文檔可能包含多種語言的文本。據我所知,沒有免費的ocr庫支持一次發送多種語言。 – davidgale 2010-11-28 17:21:08

+0

@davidgale,我非常懷疑存在這種問題的免費解決方案。您可以查看第二個選項,然後從PDF中提取文本並查看它是否可以在您的案例中可靠工作。你仍然需要弄清楚選擇區域,恕我直言,這不是一件容易的事情,我不知道任何免費軟件庫能夠做到這一點。 – 2010-11-28 17:21:48

1

(免責聲明 - 我的Atalasoft工作,其PDF產品) Atalasoft's PdfReader會做到這一點。這不是免費的,但它工作得很好。代碼如下所示:

using (PdfTextDocument doc = new PdfTextDocument(pathToFile)) { 
    PdfTextPage page = doc.GetPage(pageNumber); 
    string text = page.GetTextInBox(yourSelection); 
} 
6

該代碼使用iTextSharp的完美將提取直角座標的基礎上PDF數據

List<string> linestringlist = new List<string>(); 
    PdfReader reader = new PdfReader(pdfFilename); 
    iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(coordinate1, coordinate2, coordinate3, coordinate4); 
    RenderFilter[] renderFilter = new RenderFilter[1]; 
    renderFilter[0] = new RegionTextRenderFilter(rect); 
    ITextExtractionStrategy textExtractionStrategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), renderFilter); 
    string text = PdfTextExtractor.GetTextFromPage(reader, 1, textExtractionStrategy); 
相關問題