C# ASP.NET MVC中的Tesseract OCR
我试图在我的项目中实现Tesseract OCR。 我的解决方案中有两个项目:C# ASP.NET MVC中的Tesseract OCR,c#,asp.net-mvc,ocr,tesseract,C#,Asp.net Mvc,Ocr,Tesseract,我试图在我的项目中实现Tesseract OCR。 我的解决方案中有两个项目: 门户-它是ASP.NET MVC应用程序 OCR-这是一个类库,我在那里有Tesseract 在OCR类库中,我有一个方法: using (var ocrEngine = new TesseractEngine(/*WHAT DOES COME HERE?*/, "eng", EngineMode.Default)) { using (var pix =
- 门户-它是ASP.NET MVC应用程序
- OCR-这是一个类库,我在那里有Tesseract
using (var ocrEngine = new TesseractEngine(/*WHAT DOES COME HERE?*/, "eng", EngineMode.Default))
{
using (var pix = PixConverter.ToPix(new Bitmap(imageFilePath)))
{
using (var page = ocrEngine.Process(pix))
{
output = page.GetText();
}
}
}
在我的项目中,我有文件夹tessdata,但我不知道如何引用它,以使一切工作正常。我试过:
@"./tessdata"
或
但是它们都不起作用。我使用的是
Server.MapPath
,演示效果很好
using (var engine = new TesseractEngine(Server.MapPath(@"~/tessdata"), "eng", EngineMode.Default))
{
// have to load Pix via a bitmap since Pix doesn't support loading a stream.
using (var image = new System.Drawing.Bitmap(file.InputStream))
{
using (var pix = PixConverter.ToPix(image))
{
using (var page = engine.Process(pix))
{
}
}
}
}
您可以查看完整的源代码您可以使用以下方法:
Path.Combine(HttpRuntime.AppDomainAppPath,"tessdata")
如下图所示:
using (var engine = new TesseractEngine(Path.Combine(HttpRuntime.AppDomainAppPath,"tessdata"), "eng", EngineMode.Default))
{
// have to load Pix via a bitmap since Pix doesn't support loading a stream.
using (var image = new System.Drawing.Bitmap(file.InputStream))
{
using (var pix = PixConverter.ToPix(image))
{
using (var page = engine.Process(pix))
{
}
}
}
}
希望它能帮助你我所做的只是将tessdata文件夹移动到ASP.NET MVC主项目,然后使用简单的
Path.Combine(HttpRuntime.AppDomainAppPath,“tessdata”)
,正如@Sunil Kumar所建议的那样。这对ASP.NET MVC项目非常有效,但正如我之前所写的,我有两个项目在解决方案中,我想让tesseract工作的是类库,而不是ASP.NETMVC项目。我不能使用Server.MapPath()@Siemko我明白了,这可以帮助HttpRuntime.AppDomainAppPath返回目录od Portal(启动项目),我想实现的是获取OCR项目的目录。例如,不是“C:\Projects\mypro\Portal\”,而是“C:\Projects\mypro\OCR\为什么不使用静态路径?”
using (var engine = new TesseractEngine(Path.Combine(HttpRuntime.AppDomainAppPath,"tessdata"), "eng", EngineMode.Default))
{
// have to load Pix via a bitmap since Pix doesn't support loading a stream.
using (var image = new System.Drawing.Bitmap(file.InputStream))
{
using (var pix = PixConverter.ToPix(image))
{
using (var page = engine.Process(pix))
{
}
}
}
}