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

标签 c# asp.net ocr

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

在尝试在生成的图像中搜索特定词时,我遇到了一些障碍,我想知道解决这个问题的最佳方法是什么。我应该找到搜索词的 x,y 位置吗?

最佳答案

您可以使用 tessract OCR image用于控制台模式下的文本识别。

我不知道有这样的 pdf SDK。

但是,如果你想获取所有单词的坐标和值,你可以使用下一个我不复杂的代码,谢谢nguyenq对于 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<Rectangle, string> GetWords(string tesseractHtml)
{
    var xml = XDocument.Parse(tesseractHtml);

    var rectsWords = new Dictionary<System.Drawing.Rectangle, string>();

    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;
}

关于c# - 如何从pdf图像中查找文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12577752/

相关文章:

c# - 添加点击if语句

ocr - Tesseract Ocr引擎多维数据集模式-培训Tesseract

c# - 如何创建 tesseract OCR 可读的 TIFF 文件?

c# - 在 C# 中处理详细控制台输出的正确方法

c# - 在运行时创建工作流 WWF

c# - 如何在 ASP.Net 中创建和保存文档和模板?

javascript - 检查外部 Javascript 文件中的 IsPostBack

c# - C# += 线程安全吗?

asp.net - TNS :listener does not currently know of service requested in connect descriptor

ocr - Tesseract OCR 可以识别下标和上标吗?