【问题标题】:Feed tesseract (Tess4J) from ImageMagick (JMagick)来自 ImageMagick (JMagick) 的饲料 tesseract (Tess4J)
【发布时间】:2014-11-07 16:01:02
【问题描述】:

我正在尝试创建一个可以对多种格式的图像进行 OCR 的 Java 程序。图像不能直接从文件中读取,因为它们的字节要通过网络发送。

我目前能够使用 ImageIO 读取图像像素的原始字节。但是我想支持 ImageMagick 支持的所有格式,所以使用 JMagick 读取图像,然后将原始字节提供给 Tess4J。我不确定我应该如何处理这个问题。我发现这个函数可以给我字节:

PixelPacket[] MagickImage.getColormap();

但我必须编写特殊方法将获得的 PixelPacket 对象转换为连续字节。我可以做到这一点,但也许有更好的方法来做到这一点?例如,也许有一些非常原始的文件格式(甚至比 http://en.wikipedia.org/wiki/BMP_file_format#mediaviewer/File:BMPfileFormat.png 还要多)我可以在这种方法中使用:

byte[] imageToBlob(ImageInfo imageInfo) ?

imageInfo 对象必须指向这种原始格式,然后我可以从 bytes 数组中截取像素信息。

这是正确的方法还是我应该使用更简单(更快/更健壮)的方法?

编辑

我发现我想到的格式叫做PNM

【问题讨论】:

    标签: java imagemagick tesseract jmagick tess4j


    【解决方案1】:

    如果使用 JMagick,我认为使用 dispatchImage 方法是您正在寻找的方法。它将使您可以直接访问图像的原始像素。不需要文件格式。

    请参阅我的MagickUtil class 以获取示例,或者如果您愿意,可以使用该类。

    我还为 JMagick 支持的许多相同格式编写了纯 Java ImageIO 插件,这些插件可能有用。您可以在我的GitHub repository 中找到它们。

    【讨论】:

    • 非常感谢!我找不到这种方法,因为我主要查看返回类型,如果是dispatchImage,您将字节数组作为参数之一传递。应该考虑一下...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多