我必须从特定矩形区域内的pdf文档中提取文本。工作流程如下。首先,pdf被转换为jpg图像。然后用户在图片顶部绘制选择矩形。然后我不知何故需要从该选择区域内的pdf doc中提取所有文本。有什么建议从C#可以使用的免费软件pdf库吗?
答案 0 :(得分: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);
答案 1 :(得分:4)
我同意,OCR不是在这里使用的方法。您需要一个PDF库,它可以提取文本以及边界框坐标。
QuickPDF是一个商业图书馆(www.quickpdf.com),可以以249美元的合理价格提取所需信息。 http://www.quickpdflibrary.com/help/quickpdf/DAExtractPageText.php是您正在寻找的功能。这将提取整个页面的文本,然后您需要使用简单的Point和/或Rectangle函数将文本限制为所选矩形。
根据我的研究,我不相信iText有这种能力。
答案 2 :(得分:1)
我建议您将PDF格式化为JPEG图像后使用文本识别(OCR)提取所选区域内的文本。这是关于.NET的OCR库的article。就从PDF中提取文本而言here's an article说明了如何或多或少地可靠地实现这一点。问题是如何识别用户在所选矩形内的文本。
答案 3 :(得分:1)
(免责声明 - 我在Atalasoft的PDF产品上工作) Atalasoft's PdfReader会这样做。它不是免费软件,但效果很好。代码如下所示:
using (PdfTextDocument doc = new PdfTextDocument(pathToFile)) {
PdfTextPage page = doc.GetPage(pageNumber);
string text = page.GetTextInBox(yourSelection);
}