Tesseract 的痛点:
①对中文识别不行,即使有中文库也不行。(很多字体都识别不出来,得要训练模型)
②对图片的完整性有非常严格的要求,有的图片即使你在电脑可以预览,也会说图片格式损坏。
更换为RapidOcr-Java 后,对中文识别率大大提高,对图片的完整性也没有非常高的要求。
github :https://github.com/MyMonsterCat/RapidOcr-Java
demo示例:
maven:
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr</artifactId>
<version>0.0.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 一般只需要引入一个,CPU端建议使用onnx,移动端建议使用ncnn -->
<!-- 可前往maven中央仓库https://repo1.maven.org/maven2/io/github/mymonstercat/,查看版本 -->
<dependency>
<groupId>io.github.mymonstercat</groupId>
<artifactId>rapidocr-onnx-platform</artifactId>
<version>0.0.7</version>
</dependency>
gradle:
implementation('io.github.mymonstercat:rapidocr:0.0.7') {
exclude group: 'org.slf4j', module: 'slf4j-api'
}
implementation 'io.github.mymonstercat:rapidocr-onnx-platform:0.0.7'
代码:
String temPath = "C:\\Users\\Administrator\\Desktop\\ocr对比\\目录.png";
ParamConfig paramConfig = ParamConfig.getDefaultConfig();
paramConfig.setDoAngle(true);
paramConfig.setMostAngle(true);
InferenceEngine engine = InferenceEngine.getInstance(Model.ONNX_PPOCR_V3);
// 开始识别
OcrResult ocrResult = engine.runOcr(temPath, paramConfig);
System.out.println(ocrResult.getStrRes().replace("\n", " "));