使用哪个库从图像中提取文本?

时间:2011-02-28 19:26:47

标签: c# ocr text-recognition

我正在编写一个程序,当给出低级数学问题的图像(例如98 * 13)时,应该能够输出答案。数字为黑色,背景为白色。 不是验证码,只是数学问题的图像。

数学问题只有两个数字和一个运算符,该运算符只能是+, - ,*或/.

显然,我知道如何进行计算;)我只是不确定如何从图像中获取文本。

免费的图书馆是理想的...虽然如果我必须自己编写代码,我可能会管理。

5 个答案:

答案 0 :(得分:4)

试试这篇关于在C#中使用C ++ Google Tesseract OCR库的文章

OCR with the Tesseract interface

答案 1 :(得分:3)

对于图像中的提取词,我使用最准确的开源OCR引擎: Tesseract 。可用here或直接在您的包NuGet。

这是我在C#中的功能,它从sourceFilePath中传递的图像中提取单词。将EngineMode设置为TesseractAndCube;它比其他选项检测更多的单词。

var path = "YourSolutionDirectoryPath";
using (var engine = new TesseractEngine(path + Path.DirectorySeparatorChar + "tessdata", "fra", EngineMode.TesseractAndCube))
{
    using (var img = Pix.LoadFromFile(sourceFilePath))
    {
        using (var page = engine.Process(img))
        {
            var text = page.GetText();
            // text variable contains a string with all words found
        }
    }
}

我希望有所帮助。

答案 2 :(得分:2)

你需要OCR。 Google提供免费的Tesseract库,但它是C代码。您可以在C ++ / CLI项目中使用并通过.NET访问。

本文提供了有关识别数字的一些信息(对于数独,但您的问题类似)

http://sudokugrab.blogspot.com/2009/07/how-does-it-all-work.html

答案 3 :(得分:2)

您可以在签证工作室中使用Microsoft Office Document Imaging(Interop.MODI.dll)并提取图片文本

Document modiDocument = new Document();
modiDocument.Create(filePath);
modiDocument.OCR(MiLANGUAGES.miLANG_ENGLISH);
MODI.Image modiImage = (modiDocument.Images[0] as MODI.Image);
string extractedText = modiImage.Layout.Text;
modiDocument.Close();
return extractedText;

答案 4 :(得分:2)

以下是C#的一些有用的示例代码:

  1. 使用 Tesseract :适用于Windows桌面的免费开源OCR应用程序 - Tesseract OCR引擎的现代GUI前端。该应用程序还包括对阅读和OCR的PDF文件的支持:https://github.com/A9T9/Free-Ocr-Windows-Desktop

  2. 使用 Microsoft OCR :适用于Windows应用商店的免费开源OCR应用程序 - Microsoft OCR库的现代GUI前端。该应用程序还包括对阅读和OCR的PDF文件的支持:https://github.com/A9T9/Free-OCR-Software