package com.ruixuan.isc.utils;

import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;


public class Tess4jClient {

    //    private static String DATA_PATH = "/usr/local/tesseract/share/tessdata";
    private static String LANGUAGE = "chi_sim";

    // 入参：图片流
    public String doOCR(BufferedImage image, String path) throws Exception {
        //创建Tesseract对象
        ITesseract tesseract = new Tesseract();
        //设置中文字体库路径
        tesseract.setDatapath(path);
        //中文识别
        tesseract.setLanguage(LANGUAGE);
        //执行ocr识别
        String result = tesseract.doOCR(image);
        //替换回车和tal键  使结果为一行
//        result = result.replaceAll("\\r|\\n", "-").replaceAll(" ", "");
        return result.replaceAll(" ", "");
    }

    public static String getWords(MultipartFile file, String path) throws Exception {
        InputStream inputStream = file.getInputStream();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] buff = new byte[100];
        int rc = 0;
        while (true) {
            try {
                if (!((rc = inputStream.read(buff, 0, 100)) > 0)) break;
            } catch (IOException e) {
                e.printStackTrace();
            }
            byteArrayOutputStream.write(buff, 0, rc);
        }
        //从byte[]转换为butteredImage
        ByteArrayInputStream in = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
        BufferedImage imageFile = ImageIO.read(in);
        //识别图片的文字
        return new Tess4jClient().doOCR(imageFile, path);
        //再结合敏感词过滤算法，审核图片中的文字是否包含敏感词
    }

}
