如何从PDF文档中特定矩形区域内提取文本?

6

我需要在一个特定的矩形区域内从pdf文档中提取文本。具体流程如下:首先将pdf转换为jpg图像,然后用户在图片上绘制选择矩形。接着,我需要从pdf文档中提取所有在该选择区域内的文本。有没有什么免费的pdf库可以从C#进行访问并使用呢?


https://dev59.com/enrZa4cB1Zd3GeqP00sR - dovid
4个回答

7
这段代码将使用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);

2
你在哪个地方使用了 linestringlist - B.K.
这里的 linestringList 有什么用? - Tk1993

4
我同意,OCR不是在这里使用的方法。 您需要一个PDF库,可以提取文本和边界框坐标。
QuickPDF是一个商业库(www.quickpdf.com),可以以非常合理的价格249美元提取所需信息。 http://www.quickpdflibrary.com/help/quickpdf/DAExtractPageText.php 是您要查找的功能。 这将提取整个页面的文本,然后您需要使用简单的点和/或矩形函数将文本限制为所选矩形。
根据我的研究,我不认为iText具有此功能。
您还应阅读如何从PDF中提取文本?

1
我建议您,一旦将PDF光栅化为JPEG图像,使用文本识别(OCR)提取所选区域内的文本。这里有一个关于.NET OCR库的文章。至于从PDF中提取文本,这里有一篇文章说明如何实现相对可靠的方法。问题在于如何由用户识别所选矩形内的文本。

这不是一个选择。我需要100%的准确性。OCR并不是100%准确的。而且单个PDF文件中可能包含多种语言的文本。据我所知,目前没有免费的OCR库可以同时支持多种语言的OCR。 - mmierins
@davidgale,我非常怀疑这种问题存在免费解决方案。你可以看看第二个选项,从PDF中提取文本,并查看它是否在你的情况下可靠。但是你仍然需要弄清楚选择区域,这不是一件容易的事情,我也不知道有哪个免费库能够做到这一点。 - Darin Dimitrov

1

(免责声明 - 我在Atalasoft的PDF产品部门工作)Atalasoft's PdfReader 可以实现此功能。虽然它不是免费软件,但它运行非常良好。以下是代码示例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接