我正在编写一个程序,当给出低级数学问题的图像(例如98 * 13)时,应该能够输出答案。数字为黑色,背景为白色。 不是验证码,只是数学问题的图像。
数学问题只有两个数字和一个运算符,该运算符只能是+, - ,*或/.
显然,我知道如何进行计算;)我只是不确定如何从图像中获取文本。
免费的图书馆是理想的...虽然如果我必须自己编写代码,我可能会管理。
答案 0 :(得分:4)
试试这篇关于在C#中使用C ++ Google Tesseract OCR库的文章
答案 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#的一些有用的示例代码:
使用 Tesseract :适用于Windows桌面的免费开源OCR应用程序 - Tesseract OCR引擎的现代GUI前端。该应用程序还包括对阅读和OCR的PDF文件的支持:https://github.com/A9T9/Free-Ocr-Windows-Desktop
使用 Microsoft OCR :适用于Windows应用商店的免费开源OCR应用程序 - Microsoft OCR库的现代GUI前端。该应用程序还包括对阅读和OCR的PDF文件的支持:https://github.com/A9T9/Free-OCR-Software