zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Tesseract -ocr - java - 报错JFIF APP0 must be first marker after SOI 解决

JAVA 解决 报错 be must First After OCR
2023-09-14 09:06:39 时间

1.原因

出现这个报错,是因为图片格式有残缺或者图片格式在接口获取后存储的格式与内部的编码有冲突导致

2.解决

将其转为png后再调用 Tesseract  即可

我封装了个工具

 //转换图片为png格式
    public static String convertPng(String url) {
        String tarFilePath = url.substring(0, url.lastIndexOf(".")) + ".png";
        try {
            BufferedImage bufferedImage = ImageIO.read(new File(url));
            BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
            newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.white, null);
            ImageIO.write(newBufferedImage, "png", new File(tarFilePath));
        } catch (IOException e) {
           return "";
        }
        return tarFilePath;
    }

不可直接改后缀,需要使用 ImageIO 来转才可以, 切记