Springboot集成Tika實(shí)現(xiàn)文檔解析
1、什么是Tika
Tika是一款A(yù)pache開源的,跨平臺,支持多品種文本類型的內(nèi)容檢測和提取工具。Apache官方的介紹如下:Apache Tika™ 工具包可檢測并提取一千多種不同文件類型(如 PPT、XLS 和 PDF)中的元數(shù)據(jù)和文本。所有這些文件類型都可以通過一個(gè)界面進(jìn)行解析,這使得 Tika 可用于搜索引擎索引、內(nèi)容分析、翻譯等。
2、基本特性
跨平臺:Tika 可以在多種操作系統(tǒng)上運(yùn)行,包括 Windows、Linux 和 Mac OS。
支持多種格式:Tika 支持多種文件格式,包括常見的文檔、圖片、音頻和視頻格式。
可擴(kuò)展性:Tika 的設(shè)計(jì)是模塊化的,允許開發(fā)者添加新的解析器來支持新的文件格式。
安全性:Tika 提供了防止文件注入攻擊的機(jī)制,確保在處理用戶上傳的文件時(shí)保持安全性。
3、Tika可視化提取
Tika提供了可視化界面工具,可以直接通過可視化工具手動(dòng)提取我們想要的文本內(nèi)容??梢暬ぞ咝枰螺dtika-app.jar包,下載后,直接執(zhí)行java -jar tika-app-2.9.2.jar,即可喚起程序主頁面:
打開我們需要提取的文本,點(diǎn)擊view -> 即可提取我們想要的格式。
4、Springboot集成
4.1、maven依賴
<dependencies> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers-standard-package</artifactId> <version>2.9.2</version> </dependency> </dependencies>
4.2、Tika配置文件
tika-config.xml:
<?xml version="1.0" encoding="UTF-8"?> <properties> <encodingDetectors> <!-- 檢測 HTML 文件的字符編碼,它會根據(jù) HTML 元素(如 <meta> 標(biāo)簽)中的聲明來判斷編碼。 --> <encodingDetector class="org.apache.tika.parser.html.HtmlEncodingDetector"> <params> <!-- 讀取的最大字節(jié)數(shù)(這里是 64,000 字節(jié))用于判斷編碼 --> <param name="markLimit" type="int">64000</param> </params> </encodingDetector> <!-- Tika 的通用編碼檢測器 --> <encodingDetector class="org.apache.tika.parser.txt.UniversalEncodingDetector"> <params> <param name="markLimit" type="int">64000</param> </params> </encodingDetector> <!-- 基于 ICU4J 庫的編碼檢測器。ICU4J 是一個(gè)強(qiáng)大的國際化庫,能夠更準(zhǔn)確地檢測多語言文本的編碼。 --> <encodingDetector class="org.apache.tika.parser.txt.Icu4jEncodingDetector"> <params> <param name="markLimit" type="int">64000</param> </params> </encodingDetector> </encodingDetectors> </properties>
4.3、注入tika bean
@Configuration public class ApplicationTikaConfig { @Autowired private ResourceLoader resourceLoader; @Bean public Tika tika() throws TikaException, IOException, SAXException { Resource resource = resourceLoader.getResource("classpath:tika-config.xml"); InputStream inputStream = resource.getInputStream(); TikaConfig config = new TikaConfig(inputStream); Detector detector = config.getDetector(); Parser autoDetectParser = new AutoDetectParser(config); return new Tika(detector, autoDetectParser); } }
4.4、Service類
@Service public class TikaParserService { @Autowired private Tika tika; public void parser(Path srcPath) throws TikaException, IOException { String result = tika.parseToString(srcPath); System.out.println(result); } }
4.5、測試類TikaParserDemoTest
@SpringBootTest(classes = Main.class) @RunWith(SpringRunner.class) public class TikaParserDemoTest { @Autowired private TikaParserService tikaParserService; @Test public void testTikaParser() throws TikaException, IOException { tikaParserService.parser(Paths.get("F:", "Java開發(fā)手冊(黃山版).pdf")); } }
運(yùn)行結(jié)果:
到此這篇關(guān)于Springboot集成Tika實(shí)現(xiàn)文檔解析的文章就介紹到這了,更多相關(guān)Springboot Tika文檔解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java在并發(fā)環(huán)境中SimpleDateFormat多種解決方案
這篇文章主要介紹了Java在并發(fā)環(huán)境中SimpleDateFormat多種解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Activiti explorer.war示例工程使用過程圖解
這篇文章主要介紹了Activiti explorer.war示例工程使用過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Java 生產(chǎn)者/消費(fèi)者問題實(shí)例詳解
這篇文章主要實(shí)例分析了java中生產(chǎn)者消費(fèi)者問題的方法,需要的朋友可以可以參考下2017-04-04Spring File Storage文件的對象存儲框架基本使用小結(jié)
在開發(fā)過程當(dāng)中,會使用到存文檔、圖片、視頻、音頻等等,這些都會涉及存儲的問題,文件可以直接存服務(wù)器,但需要考慮帶寬和存儲空間,另外一種方式就是使用云存儲,這篇文章主要介紹了Spring File Storage文件的對象存儲框架基本使用小結(jié),需要的朋友可以參考下2024-08-08SpringMvc MultipartFile實(shí)現(xiàn)圖片文件上傳示例
本篇文章主要介紹了SpringMvc MultipartFile實(shí)現(xiàn)圖片文件上傳示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02零基礎(chǔ)寫Java知乎爬蟲之獲取知乎編輯推薦內(nèi)容
上篇文章我們拿百度首頁做了個(gè)小測試,今天我們來個(gè)復(fù)雜的,直接抓取知乎編輯推薦的內(nèi)容,小伙伴們可算松了口氣,終于進(jìn)入正題了,哈哈。2014-11-11淺談Java內(nèi)存模型之happens-before
于存在線程本地內(nèi)存和主內(nèi)存的原因,再加上重排序,會導(dǎo)致多線程環(huán)境下存在可見性的問題。那么我們正確使用同步、鎖的情況下,線程A修改了變量a何時(shí)對線程B可見?下面小編來簡單介紹下2019-05-05