图片文字识别 - OCR

发布时间 2023-07-09 18:45:47作者: Rover20230226

一、OCR 介绍

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

 

二、技术选型

方案 说明
百度OCR 准确率高,但收费
Tesseract-OCR Google维护的开源OCR引擎,支持Java,Python等语言调用
Tess4j 封装了Tesseract-OCR,支持Java调用

 

三、Tesseract-OCR

  Tesseract-OCR 特点:

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

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

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

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

 

四、导入依赖

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

 

五、Tess4j 测试案例

package com.heima.tess4j;

import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

import java.io.File;

public class Application {

    /**
     * 识别图片中的文字
     * @param args
     */
    public static void main(String[] args) throws TesseractException {

        //创建实例
        ITesseract tesseract = new Tesseract();

        //设置字体库路径
        tesseract.setDatapath("C:\\VmWare\\hmtt\\test");

        //设置语言 -> 简体中文
        tesseract.setLanguage("chi_sim");

        // 识别照片存储位置
        File file = new File("C:\\VmWare\\hmtt\\test\\test.png");

        //识别图片
        String result = tesseract.doOCR(file);

        System.out.println("识别的结果为:\n" + result.replaceAll("\\r|\\n","-"));

    }
}