# tika-server **Repository Path**: hrhgitee/tika-server ## Basic Information - **Project Name**: tika-server - **Description**: tika 服务(tika文档数据抽取学习)【GitHub 镜像】 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://github.com/nn200433/tika-server - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-03 - **Last Updated**: 2023-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tika-server ## 前言 简单的 tika 学习项目,主要实现了上传文档文件返回文档内容 ## 项目结构 ``` tika-server ├── tika-server-core 核心包 │ └── src │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ └── nn200433 │ │ │ └── tika │ │ │ ├── config │ │ │ │ ├── TikaAutoConfig.java 注入配置 │ │ │ │ └── TikaProperties.java 配置参数 │ │ │ ├── entity │ │ │ │ ├── ThreadProperties.java 线程池配置 │ │ │ │ └── ToolsPathProperties.java 第三方插件路径配置(如:tesseract-ocr、ffmpeg) │ │ │ ├── listener │ │ │ │ └── InitListener.java 项目启动完成监听器 │ │ │ ├── service │ │ │ │ ├── DefineParser.java 文档解析器定义 │ │ │ │ └── impl │ │ │ │ └── DefaultDefineParserImpl.java 默认文档解析器实现 │ │ │ └── utils │ │ │ └── TikaUtil.java 主要的 tika 工具类 │ │ └── resources SpringbBoot SPI │ │ └── META-INF │ │ ├── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── spring.factories │ └── test ├── tika-server-launcher │ └── src │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ └── nn200433 │ │ │ ├── tika │ │ │ │ ├── common │ │ │ │ │ └── Result.java 统一响应对象 │ │ │ │ ├── config │ │ │ │ │ └── ExceptionConfig.java 统一异常捕获配置 │ │ │ │ ├── controller 控制层(API 接口) │ │ │ │ │ └── IndexController.java │ │ │ │ ├── enums 枚举定义 │ │ │ │ │ ├── BaseEnum.java │ │ │ │ │ └── ResponseEnum.java │ │ │ │ ├── exception 自定义异常 │ │ │ │ │ └── ApiException.java │ │ │ │ └── service │ │ │ │ ├── AttachmentService.java 文件上传服务 │ │ │ │ └── impl │ │ │ │ └── AttachmentServiceImpl.java │ │ │ └── TikaApiApplication.java 启动器 │ │ └── resources │ │ ├── application.yml │ │ └── log4j2.xml │ └── test └── tika-server-ocr 其他 ocr 待实现 ``` ## 快速开始 ### 辅助插件安装 > 这里的辅助插件为 图像处理 、 音视频处理 等第三方插件。(即需要命令行调用,Java 不好实现的) 1. [Tesseract-OCR 安装](doc/install/Tesseract-OCR%20安装.md) 2. [ImageMagick 安装](doc/install/ImageMagick%20安装.md) 3. [PaddleNLP 安装.md](doc/install/PaddleNLP%20安装.md) ### 配置 ```yaml server: port: 9090 tika: thread: # 线程名称 name: tika # 核心线程数 core-pool-size: 5 # 最大线程数 max-pool-size: 10 # 队列容量 queue-capacity: 20 # 线程活跃时间(秒) keep-alive-seconds: 60 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 #### 项目打包 项目根目录执行: ```bash mvn clean install -Dmaven.test.skip=true ``` ### 问题 * [ ] linux 下 ocr 执行异常,不知道为什么。估计得重构 ocr ### 演示 ![演示](doc/imgs/image-20231011111700-rhGhd4lb.png) ## 特别鸣谢 > 感谢以下主要项目(还有一些未列出的,也十分感谢!)及参考文章,排名不分先后。 * [Hutool](https://hutool.cn) 是一个Java工具包,让Java语言也可以“甜甜的”。 * [Apache Tika](https://github.com/apache/tika) 是一个开源的 Java 库和工具,用于从各种文档类型中提取文本内容和元数据。 * [docx4j](https://github.com/guillepg/docx4j) 是一个开源(Apache v2)库,用于创建、编辑和保存 OpenXML "包",包括 docx、pptx 和 xslx。 * [Tesseract](https://github.com/tesseract-ocr/tesseract) 是一个开源的光学字符识别(OCR)引擎,由 Google 开发和维护。它的主要功能是将图像或扫描的文档中的文字内容识别为可编辑的文本。Tesseract 可以处理多种语言和文本格式,并且在 OCR 领域有着广泛的应用。 * [ImageMagick](https://github.com/ImageMagick/ImageMagick) 是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过 89 种基本格式的图片文件。 * [RapidOCR](https://github.com/RapidAI/RapidOCR) 基于 PaddleOCR、OnnxRuntime 和 OpenVINO 的跨平台 OCR 库。 * [RapidOcr-Java](https://github.com/MyMonsterCat/RapidOcr-Java) Java代码实现调用RapidOCR(本项目的 OCR 部分由该项目改造!) * [tika-source-code-interpretation](doc/article/tika-source-code-interpretation) Tika源码解读(上古版本) * [思通数科 StoneDT/多模态NLP自然语言处理引擎](https://gitee.com/stonedtx/free-nlp-api) 免费的自然语言处理、情感分析、实体识别、..... * [PaddleNLP](https://github.com/PaddlePaddle/PaddleNLP) PaddleNLP是一款简单易用且功能强大的自然语言处理和大语言模型(LLM)开发库。