当前位置:首页 > Java

java如何使用ocr

2026-03-21 11:19:34Java

使用Tesseract OCR进行Java文本识别

Tesseract是一个开源的OCR引擎,支持多种语言。在Java中可以通过Tesseract的Java封装库(如tess4j)进行调用。

依赖配置
在Maven项目中添加tess4j依赖:

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

代码示例

import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import java.io.File;

public class OCRExample {
    public static void main(String[] args) {
        Tesseract tesseract = new Tesseract();
        tesseract.setDatapath("path/to/tessdata"); // 设置Tesseract数据目录
        tesseract.setLanguage("eng"); // 设置识别语言(如"eng"表示英文)

        try {
            String result = tesseract.doOCR(new File("path/to/image.png"));
            System.out.println(result);
        } catch (TesseractException e) {
            e.printStackTrace();
        }
    }
}

使用OpenCV和Tesseract结合

OpenCV可用于预处理图像(如降噪、二值化),提高OCR识别率。

依赖配置

<dependency>  
    <groupId>org.openpnp</groupId>  
    <artifactId>opencv</artifactId>  
    <version>4.5.5-1</version>  
</dependency>  

预处理图像示例

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ImagePreprocessor {
    static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }

    public static void preprocess(String inputPath, String outputPath) {
        Mat image = Imgcodecs.imread(inputPath, Imgcodecs.IMREAD_GRAYSCALE);
        Imgproc.threshold(image, image, 0, 255, Imgproc.THRESH_BINARY | Imgproc.THRESH_OTSU);
        Imgcodecs.imwrite(outputPath, image);
    }
}

使用Google Cloud Vision API

Google Cloud Vision提供高精度的OCR服务,适合商用场景。

依赖配置

<dependency>  
    <groupId>com.google.cloud</groupId>  
    <artifactId>google-cloud-vision</artifactId>  
    <version>3.0.0</version>  
</dependency>  

代码示例

java如何使用ocr

import com.google.cloud.vision.v1.*;
import com.google.protobuf.ByteString;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CloudVisionOCR {
    public static void detectText(String filePath) throws IOException {
        List<AnnotateImageRequest> requests = new ArrayList<>();
        ByteString imgBytes = ByteString.readFrom(new FileInputStream(filePath));

        Image img = Image.newBuilder().setContent(imgBytes).build();
        Feature feat = Feature.newBuilder().setType(Feature.Type.TEXT_DETECTION).build();
        AnnotateImageRequest request = AnnotateImageRequest.newBuilder()
                .addFeatures(feat)
                .setImage(img)
                .build();
        requests.add(request);

        try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
            BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
            for (AnnotateImageResponse res : response.getResponsesList()) {
                System.out.println(res.getTextAnnotationsList().get(0).getDescription());
            }
        }
    }
}

注意事项

  • Tesseract数据文件:需下载tessdata语言包(如eng.traineddata)并指定路径。
  • 图像质量:OCR效果依赖图像清晰度,预处理(如去噪、增强对比度)可显著提升结果。
  • 云服务限制:Google Cloud Vision等API有调用次数限制,需注册账号并配置密钥。

分享给朋友:

相关文章

java如何安装

java如何安装

安装Java的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

如何卸载java

如何卸载java

卸载Java的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

java如何获取当前时间

java如何获取当前时间

获取当前时间的方法 在Java中,可以通过多种方式获取当前时间。以下是几种常见的方法: 使用 java.util.Date Date currentDate = new Date(); Syste…

hashrouter如何使用react

hashrouter如何使用react

使用 HashRouter 在 React 中的方法 安装 react-router-dom 确保项目中已安装 react-router-dom,若未安装,可通过以下命令安装: npm inst…