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

10

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

这些数学问题只有两个数字和一个运算符,而该运算符只会是+、-、*或/。

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

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


1
是的。我找不到任何适用的东西... - Entity
快速入门:https://github.com/charlesw/tesseract/ - camino
5个回答

8

为了从图片中提取文字,我使用最精准的开源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
        }
    }
}

我希望这有所帮助。

4

2
您可以在Visual 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;

2

1
IronOCR是免费供开发和测试使用的。默认的英语语言包应该能够很好地阅读此内容,但您可能还想考虑使用专门针对方程式编写的自定义Tesseract语言包
请参见https://ironsoftware.com/csharp/ocr/languages/#custom-language-example
using IronOcr; 
var Ocr = new IronTesseract(); 
Ocr.UseCustomTesseractLanguageFile("languages/equ.traineddata");

using (var Input = new OcrInput(@"images\equation.png"))
{    
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}

免责声明:我为Iron Software工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接