gzyu / tika-server

tika 服务(tika文档数据抽取学习)

Home Page:https://gitee.com/nn200433/tika-server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tika-server

前言

简单的 tika 学习项目,主要实现了上传文档文件返回文档内容

项目结构

tika-server
 ├── build_test
 │   ├── fonts                                    字体文件夹
 │   ├── jdk                                      jdk 打包尝试(为了能跑 RapidOcr 的动态库,可惜都失败了,留个档)
 │   │   ├── Dockerfile_jdk_centos8
 │   │   └── Dockerfile_jdk_ubuntu_1804
 │   ├── pythonNlp                                PaddleNLP 接口
 │   │   ├── code
 │   │   │   └── NLPTextService.py
 │   │   ├── docker
 │   │   │   └── docker-compose.yml
 │   │   └── Dockerfile
 │   └── RapidOcr                                 通过 Docker 打包不同环境的 RapidOcr 动态库(留个档)      
 │       ├── Dockerfile_ncnn
 │       └── Dockerfile_onnx
 ├── doc                                          一些收集的教程
 ├── docker-compose.yml                           启动 Docker
 ├── Dockerfile                                   打包成 Docker 镜像
 ├── tika-server-core                             核心库
 ├── tika-server-launcher                         启动入口
 ├── tika-server-ocr-boot-starter                 ocr 统一封装
 └── tika-server-paddle-ocr                       让 Tika 支持 PaddleOcr

快速开始

Docker

镜像地址:nn200433/tika-server

# 下载镜像
docker pull nn200433/tika-server:latest

###############################################

# 或者在根目录下直接使用 docker-compose 启动
docker-compose up -d

# 新版使用
docker compose up -d

###############################################

# 本地测试
curl --location --request POST 'http://127.0.0.1:19390/upload' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Accept: */*' \
--header 'Host: 192.168.0.126:19390' \
--header 'Connection: keep-alive' \
--header 'Content-Type: multipart/form-data; boundary=--------------------------705711992768855419607600' \
--header 'Cookie: JSESSIONID=B5908F33E99F483510C63A7AC5566F40' \
--form 'file=@"/home/test/file1.docx"' \
--form 'file=@"/home/test/file1.pdf"'

问题

由于依赖的 so 库,部分 Linux 无法正常运行。

Tips:目前用 onnx 在 Docker 容器中尝试成功了

辅助插件安装

这里的辅助插件为 图像处理 、 音视频处理 等第三方插件。(即需要命令行调用,Java 不好实现的)

  1. Tesseract-OCR 安装
  2. ImageMagick 安装
  3. PaddleNLP 安装.md

配置

server:
  port: 9090

spring:
  servlet:
    multipart:
      # 是否启用http上传处理
      enabled: true
      # 设置单个文件最大长度
      max-file-size: 1024MB
      # 最大请求文件的大小
      max-request-size: 1024MB
paddle:
  ocr:
    num-thread: ${TIKA_PADDLE_NUM_THREAD:1}
    gpu-index: ${TIKA_PADDLE_GPU_INDEX:-1}
    padding: ${TIKA_PADDLE_PADDING:50}
    max-side-len: ${TIKA_PADDLE_MAX_SIDE_LEN:0}
    box-score-thresh: ${TIKA_PADDLE_BOX_SCORE_THRESH:0.5}
    box-thresh: ${TIKA_PADDLE_BOX_THRESH:0.3}
    un-clip-ratio: ${TIKA_PADDLE_UN_CLIP_RATIO:1.6}
    do-angle: ${TIKA_PADDLE_DO_ANGLE:false}
    most-angle: ${TIKA_PADDLE_MOST_ANGLE:false}
    is-delete-detect-file: ${TIKA_PADDLE_DELETE_DETECT_FILE:true}
    model-ver: ${TIKA_PADDLE_MODEL_VER:ONNX_PPOCR_V4}
tika:
  nlp-api: http://192.168.0.126:8801
  thread:
    # 线程名称
    name: tika
    # 核心线程数
    core-pool-size: 5
    # 最大线程数
    max-pool-size: 10
    # 队列容量
    queue-capacity: 20
    # 线程活跃时间(秒)
    keep-alive-seconds: 60
  paddle:
    is-debug: ${TIKA_PADDLE_IS_DEBUG:false}
    debug-path: ${TIKA_PADDLE_DEBUG_PATH:}
    is-skip-ocr: ${TIKA_PADDLE_IS_SKIP_OCR:false}
    min-file-size-to-ocr: ${TIKA_PADDLE_MIN_FILE_SIZE_TO_OCR:0}
    max-file-size-to-ocr: ${TIKA_PADDLE_MAX_FILE_SIZE_TO_OCR:1073741824}

#  tools-path:
#    # ocr识别插件安装路径
#    tess-ocr: E:\Program Files\Tesseract-OCR
#    # 图像处理插件安装路径
#    image-magick: E:\Program Files\ImageMagick-7.1.1-Q16-HDRI

开发

环境

  • jdk 1.8.0_341
  • Apache Maven 3.9.4
  • IntelliJ IDEA 2023.2.1
  • Windows 11

项目打包

项目根目录执行:

mvn clean install -Dmaven.test.skip=true

演示

演示

特别鸣谢

感谢以下主要项目(还有一些未列出的,也十分感谢!)及参考文章,排名不分先后。

  • Hutool 是一个Java工具包,让Java语言也可以“甜甜的”。
  • Apache Tika 是一个开源的 Java 库和工具,用于从各种文档类型中提取文本内容和元数据。
  • docx4j 是一个开源(Apache v2)库,用于创建、编辑和保存 OpenXML "包",包括 docx、pptx 和 xslx。
  • Tesseract 是一个开源的光学字符识别(OCR)引擎,由 Google 开发和维护。它的主要功能是将图像或扫描的文档中的文字内容识别为可编辑的文本。Tesseract 可以处理多种语言和文本格式,并且在 OCR 领域有着广泛的应用。
  • ImageMagick 是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过 89 种基本格式的图片文件。
  • RapidOCR 基于 PaddleOCR、OnnxRuntime 和 OpenVINO 的跨平台 OCR 库。
  • RapidOcr-Java Java代码实现调用RapidOCR
  • tika-source-code-interpretation Tika源码解读(上古版本)
  • 思通数科 StoneDT/多模态NLP自然语言处理引擎 免费的自然语言处理、情感分析、实体识别、.....
  • PaddleNLP PaddleNLP是一款简单易用且功能强大的自然语言处理和大语言模型(LLM)开发库。

About

tika 服务(tika文档数据抽取学习)

https://gitee.com/nn200433/tika-server

License:Apache License 2.0


Languages

Language:Java 89.0%Language:Python 8.1%Language:Dockerfile 2.9%