无法读取EBCDIC 037解码图像Java

问题描述

我有一个EBCDIC文件,可从中提取图像。但是,图像上有些数据是识别我的交易的关键来源。 假设我在桌面上以“ img1.jpg”的名称存储了一个名为“ stackoverflow logo”的图像,当我使用以下代码阅读该图像时,它就可以工作

String inputimage = "C:\\Desktop\\img1.jpg";
File imageFile = new File(inputimage);
BufferedImage image1 = ImageIO.read(imageFile);
System.out.println(image1);

但是,当我尝试对从EBCDIC转换中解码的图像进行相同操作时,它将返回null。

我观察到的差异是解码图像中没有颜色。有什么方法可以读取这些图像并检索图像上的文本。以下不是我正在处理的确切图像,只是为了给出一个想法,我正在共享一个来自Internet的示例。 注意:正在处理的图像看起来像“扫描图像”(灰度) 例:

enter image description here

此外,我观察到,如果我打开解码文件并通过截图工具进行屏幕捕获,并将其存储为jpg文件(已经是jpg)并读取,则系统正在读取该文件。不确定问题出在哪里,是压缩还是颜色编码或格式。

解决方法

谢谢大家。 我使用Tess4j解码TIFF图像。不幸的是,我正在寻找的信息在解码后的文本中不可用。但是,用POC完成。 使用以下库并在存在图像的文件夹中添加了eng.traineddata

import net.sourceforge.tess4j.*;
String inputImage = "C:\\Desktop\\img1.tiff";
File imageFile = new File(inputImage);
ITesseract imageRead = new Tesseract();
imageRead.setDataPath("C:\\Desktop\\");
imageRead.setLanguage("eng");
String imageText = imageRead.doOCR(imageFile);
System.out.println(imageText);