2010-11-28 67 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);