Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC中的Tesseract OCR_C#_Asp.net Mvc_Ocr_Tesseract - Fatal编程技术网

C# ASP.NET MVC中的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 =

我试图在我的项目中实现Tesseract OCR。 我的解决方案中有两个项目:

  • 门户-它是ASP.NET MVC应用程序
  • OCR-这是一个类库,我在那里有Tesseract
在OCR类库中,我有一个方法:

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))
                {

                }
            }
        }
    }