在C#中使用MODI读取图像-缺少长度为1的数字

发布于 2024-08-26 06:54:11 字数 416 浏览 5 评论 0原文

我正在构建一个 C# 应用程序,在其中尝试从 gif 图像 (OCR) 中读取文本 - 我正在使用 MODI,图像有点像乐透优惠券(行和列中的随机数字)。我现在得到以下代码,它读取除单个数字(1、2、3...)之外的所有数字,

MODI.Document objModi = new MODI.Document();
objModi.Create("C:\\image.gif");
objModi.OCR(MODI.MiLANGUAGES.miLANG_DANISH, true, true);
MODI.Image image = (MODI.Image)objModi.Images[0];
MODI.Layout layout = image.Layout;

我无法更改图像的内容,但我可以对上面的代码执行任何操作,以便它可以读取单个数字吗?

I am about building an C#-application in which I am trying to read text from an gif-image (OCR) - I am using MODI and the images are a bit like a lotto coupon (random numbers in rows and columns). I now got the following code which read all numbers except single numbers (1, 2, 3...)

MODI.Document objModi = new MODI.Document();
objModi.Create("C:\\image.gif");
objModi.OCR(MODI.MiLANGUAGES.miLANG_DANISH, true, true);
MODI.Image image = (MODI.Image)objModi.Images[0];
MODI.Layout layout = image.Layout;

I cannot change the content of the image but can I do anything with the above code so it can read the single numbers?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

流年里的时光 2024-09-02 06:54:11

字符串结果=“”;
foreach(imag.Layout.Words 中的 MODI.Word 单词项)
{
结果+=worditems.Text+',';
}

string reult="";
foreach(MODI.Word worditems in imag.Layout.Words)
{
result+=worditems.Text+',';
}

菩提树下叶撕阳。 2024-09-02 06:54:11

没有找到完美的解决方案,通过向我的图片添加额外的内容(如我上一条评论中所述)获得了最佳结果。

Did not find a perfect solution, got the best result by adding extra content to my picture as described in my last comment.

回梦 2024-09-02 06:54:11

您可以添加以下代码

numofwords = layout.NumWords;

for (int l = 0; l < numofwords; l++)
    {
        word = (MODI.Word)layout.Words[l];

        for (int j = 0; j < word.Rects.Count; j++)
        {
            MODI.MiRect rect = (MODI.MiRect)word.Rects[j];
            if (j == 0)
            {
                top = rect.Top;
            }
            if (height == 0 || height < (rect.Bottom - rect.Top))
                height = rect.Bottom - rect.Top;
            width = rect.Right - rect.Left;
            right = rect.Left + width;
            top = rect.Top;
            left = rect.Left;
        }
        OCRDocWord ocrword = new OCRDocWord(top, left, width, height, word.Text);
        width = 0;
        wordlist.Add(ocrword);
   }

You can add the follwoing code

numofwords = layout.NumWords;

for (int l = 0; l < numofwords; l++)
    {
        word = (MODI.Word)layout.Words[l];

        for (int j = 0; j < word.Rects.Count; j++)
        {
            MODI.MiRect rect = (MODI.MiRect)word.Rects[j];
            if (j == 0)
            {
                top = rect.Top;
            }
            if (height == 0 || height < (rect.Bottom - rect.Top))
                height = rect.Bottom - rect.Top;
            width = rect.Right - rect.Left;
            right = rect.Left + width;
            top = rect.Top;
            left = rect.Left;
        }
        OCRDocWord ocrword = new OCRDocWord(top, left, width, height, word.Text);
        width = 0;
        wordlist.Add(ocrword);
   }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文