如何从pdf图像中查找文本?

我正在开发一个C#应用程序,我将PDF文档转换为图像,然后在自定义查看器中呈现该图像。

在尝试搜索生成的图像中的特定单词时,我遇到了一些砖墙,我想知道最好的方法是什么。 我应该找到搜索到的单词的x,y位置吗?

您可以在控制台模式下使用tessract OCR图像进行文本识别。

我不知道这样的pdf SDK。

但是,如果你想获得所有的单词坐标和值,你可以使用下一个我不复杂的代码,感谢nguyenq for hocr提示:

public void Recognize(Bitmap bitmap) { bitmap.Save("temp.png", ImageFormat.Png); var startInfo = new ProcessStartInfo("tesseract.exe", "temp.png temp hocr"); startInfo.WindowStyle = ProcessWindowStyle.Hidden; var process = Process.Start(startInfo); process.WaitForExit(); GetWords(File.ReadAllText("temp.html")); // Futher actions with words } public Dictionary GetWords(string tesseractHtml) { var xml = XDocument.Parse(tesseractHtml); var rectsWords = new Dictionary(); var ocr_words = xml.Descendants("span").Where(element => element.Attribute("class").Value == "ocr_word").ToList(); foreach (var ocr_word in ocr_words) { var strs = ocr_word.Attribute("title").Value.Split(' '); int left = int.Parse(strs[1]); int top = int.Parse(strs[2]); int width = int.Parse(strs[3]) - left + 1; int height = int.Parse(strs[4]) - top + 1; rectsWords.Add(new Rectangle(left, top, width, height), ocr_word.Value); } return rectsWords; } 

使用ITextSharp 在这里下载它。 确保PDF是可搜索的。

并使用此代码:

 public static string GetTextFromAllPages(String pdfPath) { PdfReader reader = new PdfReader(pdfPath); StringWriter output = new StringWriter(); for (int i = 1; i <= reader.NumberOfPages; i++) output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i, new SimpleTextExtractionStrategy())); return output.ToString(); }