成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Tika 與 Spring Boot 的完美結合:支持任意文檔解析的神器

開發 前端
隨著數字化轉型的加速,企業和組織越來越依賴自動化工具來處理大量的文檔數據。Apache Tika 是一個強大的開源工具,專門用于從各種文件格式中提取文本和元數據。Spring AI也自動集成了Tika作為文檔解析器。

環境:SpringBoot3.2.5


一、簡介

文檔解析在現代企業和開發領域中應用還是非常廣泛的,尤其是在需要從多種格式的文檔中提取有價值信息的情況下。隨著數字化轉型的加速,企業和組織越來越依賴自動化工具來處理大量的文檔數據。Apache Tika 是一個強大的開源工具,專門用于從各種文件格式中提取文本和元數據。Spring AI也自動集成了Tika作為文檔解析器。

通過使用 Tika,企業不僅可以簡化文檔處理流程,還能提高數據處理的準確性和效率。

Tika有哪些優勢呢?

1. 廣泛的格式支持

Tika 支持超過 1000 種文檔格式,包括常見的 Office 文檔(如 DOCX、XLSX、PPTX)、PDF、HTML、音頻、視頻和圖像文件。

2. 易于集成

Tika 提供了一個簡單易用的 Java API,可以輕松地集成到任何 Java 應用程序中,包括 Spring Boot 應用。

3. 內容和元數據提取

Tika 不僅能夠提取文檔的內容,還能提取文檔的元數據,如標題、作者、創建日期等。

4. 自然語言處理(NLP)功能

Tika 內置了一些自然語言處理功能,如語言檢測、詞頻統計等。這使得 Tika 成為一個多功能工具,不僅限于文檔解析,還可以用于文本分析。

5. 批處理和自動化

Tika 支持批處理模式,可以高效地處理大量文檔。這對于需要自動化文檔處理流程的應用非常有用,可以節省時間和人力資源。

6. 跨平臺兼容性

Tika 是純 Java 編寫的,因此可以在任何支持 Java 的平臺上運行,具有很好的跨平臺兼容性。

7. 社區支持

作為 Apache 基金會的一個項目,Tika 擁有一個活躍的社區支持。

8. 安全性

Tika 在處理文檔時支持安全功能,如防止惡意內容(如 XSS 攻擊)和處理加密文檔。

9. 擴展性和插件化

Tika 設計為可擴展的,支持通過插件來增加新的解析器和功能。

10. 輕量級

盡管功能強大,Tika 卻是一個相對輕量級的工具,不需要安裝復雜的依賴環境即可運行。

接下來,我們將通過幾個示例詳細介紹有關Tika的使用。

2. 實戰案例

Tika 提供了多種解析文件的方法。這些方法提供了不同程度的控制、靈活性和復雜性。

環境準備

<properties>
  <tika.version>2.9.2</tika.version>
</properties>
<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-core</artifactId>
  <version>${tika.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-parsers-standard-package</artifactId>
  <version>${tika.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-parser-scientific-package</artifactId>
  <version>${tika.version}</version>
</dependency>

注意你使用的版本,可能會有些差異。

2.1 使用 Tika 門面進行解析

Tika Facade 提供了許多快速、簡便的方法,讓 Tika 對內容進行解析,并返回結果純文本。

public static String parseToString() throws Exception {
  Tika tika = new Tika();
  try (InputStream stream = new FileInputStream(new File("e:\\technology.docx"))) {
    return tika.parseToString(stream);
  }
}

輸出結果

圖片圖片

完整的將word文檔中的內容按照格式解析出來。

2.2 解析文本文件

不管你要解析什么文檔格式,你都可以通過AutoDetectParser來完成解析動作,不過這里我們使用具體的文本解析器TXTParser。

TXTParser parser = new TXTParser() ;
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata() ;
ParseContext context = new ParseContext() ;
try (InputStream stream = new FileInputStream(new File("C:\\execute script.txt"))) {
  parser.parse(stream, handler, metadata, context) ;
}
System.out.println(handler.toString()) ;
System.out.println(metadata.toString()) ;

輸出結果

圖片圖片

2.3 解析PDF文檔

與上面解析文本文檔一樣,我們只需要切換不同的解析器即可,如下示例:

PDFParser parser = new PDFParser() ;
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata() ;
ParseContext context = new ParseContext() ;
try (InputStream stream = new FileInputStream(new File("D:\\setups\\ReferenceCard.pdf"))) {
  parser.parse(stream, handler, metadata, context) ;
}
System.out.println(handler.toString()) ;
System.out.println(metadata.toString()) ;

這里僅僅是切換了解析器而已,輸出結果:

圖片圖片

2.4 使用自動檢測解析器進行解析

為了獲得更多控制權,你可以直接調用 Tika 解析器。大多數情況下,你會希望從自動檢測解析器開始使用,它會自動找出你的內容類型,然后為你調用相應的解析器。

public static String parseAutoDetect() throws Exception {
  AutoDetectParser parser = new AutoDetectParser() ;
  BodyContentHandler handler = new BodyContentHandler() ;
  Metadata metadata = new Metadata();
  try (InputStream stream = new FileInputStream(new File("e:\\technology.docx"))) {
    parser.parse(stream, handler, metadata);
    return handler.toString();
  }
}

這同樣能正確的解析文檔內容,在這里我們不需要使用具體文檔的解析器,而是由Tika自動的監測。

2.5 將文檔解析為HTML

在解析時,我們可以通過使用 ToXMLContentHandler,可以以字符串形式獲取整個文檔的 XHTML 內容。

public static String parserToXHTML() throws Exception {
  ToXMLContentHandler handler = new ToXMLContentHandler();
  
  AutoDetectParser parser = new AutoDetectParser();
  Metadata metadata = new Metadata();
  try (InputStream stream = new FileInputStream(new File("e:\\technology.docx"))) {
      parser.parse(stream, handler, metadata);
      return handler.toString();
  }
}

輸出結果

圖片圖片

保存為html后,通過瀏覽器瀏覽

圖片圖片

完美的生成HTML文檔。

2.6 定制化Tika

通過 Tika 的配置 XML,可以對使用哪些解析器以及它們的優先級順序等進行高度控制。如下示例配置(tika-config.xml)

<?xml versinotallow="1.0" encoding="UTF-8"?>
<properties>
  <parsers>
    <!-- 配置了默認解析器,同時設置了不解析n哪些類型的文檔 -->
    <parser class="org.apache.tika.parser.DefaultParser">
      <!-- 這將不解析PDF文檔-->
      <mime-exclude>application/pdf</mime-exclude>
    </parser>
  </parsers>
</properties>

使用方式

TikaConfig config = new TikaConfig(new ClassPathResource("tika-config.xml").getFile());
AutoDetectParser parser = new AutoDetectParser(config) ;
// ...

當你解析PDF文檔時將輸出如下提示:

X-TIKA:Parsed-By=org.apache.tika.parser.EmptyParser X-TIKA:Parsed-By-Full-Set=org.apache.tika.parser.EmptyParser Content-Type=application/pdf

你也可以為具體的文檔類型,自定義解析器,可如下配置:

<?xml versinotallow="1.0" encoding="UTF-8"?>
<properties>
  <parsers>
    <parser class="com.pak.PackPDFParser">
      <mime>application/pdf</mime>
    </parser>
  </parsers>
</properties>

這里定義了pdf文檔將會使用PackPDFParser進行解析。

2.7 與Spring Boot結合

我們這里通過文件上傳的方式,將上傳的文件解析為文本數據,然后輸出。

首先,配置自動關聯文檔的解析器

@Bean
Parser parser() {
  AutoDetectParser parser = new AutoDetectParser() ;
  parser.setFallback(new TXTParser()) ;
  return parser ;
}

接下來,定義Controller接口

@RestController
@RequestMapping("/tika")
public class TikaController {


  private final Parser parser ;
  public TikaController(Parser parser) {
    this.parser = parser ;
  }
  
  @PostMapping("/upload")
  public String upload(MultipartFile file) throws Exception {
    InputStream stream = file.getInputStream() ;
    BodyContentHandler handler = new BodyContentHandler();
    this.parser.parse(stream, handler, new Metadata(), new ParseContext()) ;
    return handler.toString() ;
  }
}

通過postman進行接口調用

圖片圖片

與Spring Boot結合非常的簡單也就是簡單的調用相應的API接口。

責任編輯:武曉燕 來源: Spring全家桶實戰案例源碼
相關推薦

2009-06-04 10:44:34

StrutsHibernate配合

2011-03-07 16:10:41

FireFTPFirefoxFTP

2022-05-17 09:19:17

XebianLinuxLinux 發行版

2022-07-07 08:38:15

Springflowable引擎

2025-01-02 11:01:13

Apache文件類型部署

2010-04-29 10:32:14

虛擬技術上海世博會

2022-04-19 20:39:03

協程多進程

2009-07-03 13:54:38

Java Servle

2021-05-25 09:10:54

工具代碼開發

2025-02-27 08:00:00

熔斷機制微服務Spring

2025-02-17 09:32:18

2024-05-28 09:30:13

2025-02-25 08:00:00

SpringBootLua開發

2010-03-04 09:16:05

Opera版本發布

2024-05-15 08:54:04

C++類型限定符代碼

2010-07-27 09:11:38

FlexBuilder

2015-11-04 15:13:56

華為

2021-03-17 11:29:24

物聯網環境數據環境風險

2009-08-02 17:26:11

以太網電源以太網供電

2013-10-31 13:19:06

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线一区二区三区 | 99国产精品视频免费观看一公开 | 亚洲国产精品一区二区久久 | 在线免费观看毛片 | 中文字幕亚洲一区 | 美女中文字幕视频 | 国产三级 | 91视频大全 | 中文字幕精品一区 | 欧美色性| 欧美综合一区二区 | 日韩中文字幕一区二区 | 日日摸日日碰夜夜爽2015电影 | 最新中文字幕在线 | 国产精品久久久久久久久久尿 | 精品久久久久久久久亚洲 | 伊人导航 | 欧美在线综合 | 成人影院免费视频 | 男女国产网站 | 久久综合入口 | 欧美日韩一区不卡 | 久草免费电影 | 一区二区三区免费 | 亚洲第一天堂无码专区 | 国产91网址 | 妞干网视频 | 亚洲午夜在线 | 日韩国产中文字幕 | 亚洲综合色自拍一区 | 欧美精品99 | 国产一二三视频在线观看 | 97精品国产 | 日韩高清一区 | 成人黄色av网站 | 欧美日韩一区二区电影 | av网站在线播放 | 国产日韩精品在线 | 欧美淫| 久久久久一区二区三区四区 | 特黄色一级毛片 |