Docker 部署 Apache Tika 使用 Tesseract OCR
方式1: 手动部署
步骤1: 拉取 apache/tika:latest-full 镜像并启动
拉取命令
docker pull apache/tika:latest-full
启动命令
docker run -d --name tika-docker -p 9998:9998 apache/tika:latest-full
-d:后台运行容器--name tika-docker:指定容器名称,方便后续管理-p 9998:9998:将容器的 9998 端口映射到主机的 9998 端口,方便外部访问
步骤2: 安装 Tesseract 中文语言包
首先使用 root 权限进入容器
docker exec -it --user root tika-docker /bin/bash
在容器内安装中文语言包
apt-get update && apt-get install -y tesseract-ocr-chi-sim
方式2: Dockerfile 一键部署
创建一个名为 Dockerfile 的文件(无扩展名), 文件内容如下:
FROM apache/tika:latest-full
# 切换到 root 用户
USER root
# 安装中文语言包并清理 apt 缓存以减小镜像体积
RUN apt-get update && apt-get install -y tesseract-ocr-chi-sim && rm -rf /var/lib/apt/lists/*
使用以下命令构建镜像
docker build -t tika-chinese:latest .
使用以下命令运行容器
docker run -d --name tika-chinese -p 9998:9998 tika-chinese:latest
测试OCR功能
采用Java 代码调用 Tika OCR 服务
1. 引入依赖
2026年3月23日 最新版本为 3.3.0
<!--Apache Tika-->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
2. 编写测试代码
import org.junit.jupiter.api.Test;
import java.io.*;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class TestTikaOCR {
public static String extractText(File file) throws Exception {
HttpClient client = HttpClient.newHttpClient();
// 构建上传文件请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://localhost:9998/tika")) // Tika 服务地址
.header("Accept", "text/plain") // 请求纯文本格式
.header("X-Tika-OCRLanguage", "chi_sim+eng") // 识别中文和英文
.header("Content-Type", "application/octet-stream") // 二进制文件上传
.PUT(HttpRequest.BodyPublishers.ofFile(file.toPath())) // 上传文件内容
.build();
// 发送请求并获取文本
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
}
@Test
public void testTikaOCR() throws Exception {
File file = new File("img-zh-01.png");
String text = extractText(file);
System.out.println("===== OCR 提取结果 =====");
System.out.println(text);
}
@Test
public void testTikaOCR2() throws Exception {
File file = new File("img-en-01.png");
String text = extractText(file);
System.out.println("===== OCR 提取结果 =====");
System.out.println(text);
}
}
准备图片
中文图片

英文图片

运行测试
中文识别结果

英文识别结果


浙公网安备 33010602011771号