123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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 String dataPath = "/data/webapp/RuiXuan-Cloud/tessdata";
- private String language = "chi_sim";
- // 入参:图片流
- public String doOCR(BufferedImage image) throws Exception {
- //创建Tesseract对象
- ITesseract tesseract = new Tesseract();
- //设置中文字体库路径
- tesseract.setDatapath(dataPath);
- //中文识别
- tesseract.setLanguage(language);
- //执行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);
- //再结合敏感词过滤算法,审核图片中的文字是否包含敏感词
- }
- // public byte[] downLoadFile(String pathUrl) {
- // String key = pathUrl.replace(minIOConfigProperties.getEndpoint()+"/","");
- // int index = key.indexOf("/");
- // String bucket = key.substring(0,index);
- // String filePath = key.substring(index+1);
- // InputStream inputStream = null;
- // try {
- // inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(minIOConfigProperties.getBucket()).object(filePath).build());
- // } catch (Exception e) {
- // log.error("minio down file error. pathUrl:{}",pathUrl);
- // e.printStackTrace();
- // }
- //
- // 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);
- // }
- // return byteArrayOutputStream.toByteArray();
- // }
- }
|