123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package com.ruixuan.isc.utils;
- import io.minio.GetObjectArgs;
- import lombok.Data;
- import net.sourceforge.tess4j.ITesseract;
- import net.sourceforge.tess4j.Tesseract;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
- import org.springframework.web.bind.annotation.RequestParam;
- 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;
- @Data
- @Component
- public class Tess4jClient {
- private static String DATA_PATH = "/data/webapp/RuiXuan-Cloud/tessdata";
- private static String LANGUAGE = "chi_sim";
- // 入参:图片流
- public String doOCR(BufferedImage image) throws Exception {
- //创建Tesseract对象
- ITesseract tesseract = new Tesseract();
- //设置中文字体库路径
- tesseract.setDatapath(DATA_PATH);
- //中文识别
- tesseract.setLanguage(DATA_PATH);
- //执行ocr识别
- String result = tesseract.doOCR(image);
- //替换回车和tal键 使结果为一行
- System.out.println(result.replaceAll(" ", ""));
- result = result.replaceAll("\\r|\\n", "-").replaceAll(" ", "");
- return result;
- }
- public String getWords(MultipartFile file) 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 doOCR(imageFile);
- //再结合敏感词过滤算法,审核图片中的文字是否包含敏感词
- }
- }
|