package org.springblade.modules.test4j;
|
|
import io.swagger.annotations.Api;
|
import lombok.AllArgsConstructor;
|
import net.sourceforge.tess4j.ITesseract;
|
import net.sourceforge.tess4j.Tesseract;
|
import net.sourceforge.tess4j.TesseractException;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.modules.test4j.util.Test4jUtil;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.imageio.ImageIO;
|
import java.awt.*;
|
import java.awt.image.BufferedImage;
|
import java.io.IOException;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@RestController
|
@AllArgsConstructor
|
@RequestMapping("/test4j")
|
@Api(value = "图片智能识别", tags = "图片智能识别")
|
public class Test4jController {
|
|
@PostMapping("/read-id")
|
public R readText(@RequestParam("file") MultipartFile file) {
|
try {
|
BufferedImage grayscaleImage = grayscale(ImageIO.read(file.getInputStream()));
|
String text = recognizeText(grayscaleImage);
|
return R.data(text);
|
} catch (IOException e) {
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
public BufferedImage grayscale(BufferedImage image) {
|
int width = image.getWidth();
|
int height = image.getHeight();
|
BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
|
Graphics g = result.getGraphics();
|
g.drawImage(image, 0, 0, null);
|
g.dispose();
|
return result;
|
}
|
|
public String recognizeText(BufferedImage image) {
|
ITesseract tesseract = new Tesseract();
|
// 设置Tesseract的路径
|
tesseract.setDatapath("F:\\test4jdata");
|
// 设置为中文简体
|
tesseract.setLanguage("chi_sim");
|
try {
|
return tesseract.doOCR(image);
|
} catch (TesseractException e) {
|
e.printStackTrace();
|
return null;
|
}
|
}
|
}
|