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

Posted

技术标签:

【中文标题】使用哪个库从图像中提取文本?【英文标题】:Which library to use to extract text from images? 【发布时间】:2011-07-06 00:27:33 【问题描述】:

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

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

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

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

【问题讨论】:

是的。我找不到任何适用的... github.com/charlesw/tesseract "快速入门" 【参考方案1】:

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

OCR with the Tesseract interface

【讨论】:

【参考方案2】:

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

希望对你有帮助。

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于使用哪个库从图像中提取文本?的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 python 中的地理库从文本中提取城市名称时出错

如何在 iOS 中使用 Tesseract OCR 库从图像中识别准确的文本?

如何在java中提取网页文本内容? [关闭]

如何从图像中提取所需的文本部分,而不是使用 OCR 提取图像中的所有文本?

没有从图像中获取印地语文本

如何使用 PHP 从图像中提取文本