OCR图片文字识别

2025-02-03

什么是OCR?

OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的 字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程

方案

说明

百度OCR

收费

Tesseract-OCR

Google维护的开源ocR引l擎,支持Java,Python等语言调用

Tess4J

封装了Tesseract-OCR,支持Java调用

Tesseract-OCR

Tesseract-OCR特点:

  • Tesseract支持UTF-8编码格式,并且可以"开箱即用”地识别100多种语言。

  • Tesseract支持多种输出格式:纯文本,hOCR(HTML),PDF等

  • 官方建议,为了获得更好的OCR结果,最好提供给高质量的图像。

  • Tesseract进行识别其他语言的训练

具体的训练方式,请参考官方提供的文档:https:/tesseract-ocr.github.io/tessdoc/

在Java中使用

导入依赖

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.1.1</version>
</dependency>

代码示例

public class Main {
    public static void main(String[] args) throws TesseractException {
        // 创建实例
        Tesseract tesseract = new Tesseract();
        // 设置字体库路径,字体包所在文件夹
        tesseract.setDatapath("E:\\workspace");
        // 设置语言--》简体中文: 固定写法,chi_sim.traineddata去掉后缀
        tesseract.setLanguage("chi_sim");
        File file = new File("C:\\Users\\loster\\Downloads\\a.png");
        // 开始识别
        String res = tesseract.doOCR(file);
        System.out.println("识别结果:  " + res);
    }
}

a.png

识别结果:

识别结果:  你在狗叫什么? ? ? .
真是莫名其妙,

ocr识别中文包下载:

chi_sim.traineddata

PREV
延迟队列--Redis实现
NEXT
敏感词-过滤之DFA算法