【问题标题】:How to extract all the values and decimal point values from an image如何从图像中提取所有值和小数点值
【发布时间】:2015-09-14 07:35:29
【问题描述】:

我在从图像中提取文本时遇到问题。

问题是,在提取 .jpg 图像时,除了一些包含 172641 % 之类的数字的特定小数值之外,所有数据都可以执行。

实际上图像中的值为17.2641,但提取后,特定小数点未读取并得到结果为172641。

请帮我获取包括小数点在内的所有值。

我使用下面的代码:

try 
{
    IEnumerator files = Directory.GetFiles(directoryPath).GetEnumerator();
    while (files.MoveNext())
    {
        string ls_Outputpath = System.Reflection.Assembly.GetExecutingAssembly().Location.Substring(0, System.Reflection.Assembly.GetExecutingAssembly().Location.LastIndexOf("\\")) + "\\Output\\Result_" + DateTime.Now.ToString("ddMMyyyyhhmmss") + ".txt";
        string fileExtension = Path.GetExtension(Convert.ToString(files.Current));
        string fileName = Convert.ToString(files.Current).Replace(fileExtension, string.Empty).Trim();
        string strImageTextFileName = string.Empty;
        if (fileExtension == ".jpg" || fileExtension == ".JPG" || fileExtension == ".Jpeg")
        {
            gs_Filename = fileName;
            try
            {
                MODI.Document md = new MODI.Document();
                md.Create(Convert.ToString(files.Current));
                try
                {
                    md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
                }
                catch (Exception ex)
                {
                    Log(ex.Message.ToString(), gsLogFileName);
                }
                MODI.Image image = (MODI.Image)md.Images[0];
                FileStream createFile =
                new FileStream(fileName + ".txt", FileMode.CreateNew);
                strImageTextFileName = Path.GetFileName(fileName);
                StreamWriter writeFile = new StreamWriter(createFile);
                writeFile.Write(image.Layout.Text);
                writeFile.Close();
            }
            catch (Exception ex)
            {
                Log("Exception in Extracting text from Image :" + ex.Message.ToString(), gsLogFileName);
            }
        }
    }
}
catch (Exception ex)
{

}

【问题讨论】:

  • 听起来像是 OCR 软件问题而不是编程问题。

标签: c# winforms


【解决方案1】:

考虑尝试另一个 OCR 引擎,例如 Tesseract。 他们的样本能够做到这一点:

【讨论】:

  • 我们是否需要添加任何其他 dll。如果是,请分享获取途径。
  • 是的,显然需要 tesseract 引擎 dll。请转到上面链接的 github 存储库并 eximine tesseract/Samples/Tesseract.ConsoleDemo 项目。您可以下载源代码并构建它,所有依赖项都在那里。
  • 我尝试过使用 tessnet。出现错误,例如,无法加载文件或程序集 'tessnet2_64,Version=2.0.4.0,Culture=neutral,PublicKeyToken=1550524b5ba07e29' 或其依赖项之一。试图加载格式不正确的程序。
【解决方案2】:

如果在 Windows 上,请考虑使用新的 Microsoft OCR 组件。它工作得很好。 https://www.nuget.org/packages/Microsoft.Windows.Ocr/

【讨论】:

猜你喜欢
  • 2012-12-19
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2019-04-18
  • 2015-08-09
  • 1970-01-01
相关资源
最近更新 更多