7

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

数学题只有两个数字和一个运算符,而那个运算符只有 +、-、* 或 /。

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

一个免费的库将是理想的......虽然如果我必须自己编写代码,我可能会管理。

4

4 回答 4

4

试试这篇关于在 C# 中使用 C++ Google Tessaract OCR 库的帖子

带有 Tesseract 界面的 OCR

于 2011-02-28T19:30:56.050 回答
4

为了从图像中提取单词,我使用了最准确的开源 OCR 引擎:Tesseract在此处或直接在您的包 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
        }
    }
}

我希望这会有所帮助。

于 2017-02-28T10:50:21.880 回答
2

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

This article提供了一些关于识别数字的信息(对于数独,但你的问题是相似的)

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

于 2011-02-28T19:33:04.117 回答
2

您可以在 Visaul Studio 中使用 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;
于 2016-08-19T19:08:10.647 回答