SpringBoot 整合 Apache Tika提取數(shù)據(jù)的具體操作
1 SpringBoot 整合 Apache Tika
1.1 Tika
1.1.1 Tika特性
Apache Tika 是一個(gè)功能強(qiáng)大的內(nèi)容分析工具,它能夠從多種文件格式中提取文本、元數(shù)據(jù)以及其他結(jié)構(gòu)化信息。以下是 Apache Tika 的主要特性:
- 多格式支持
Tika的最大特點(diǎn)之一就是支持廣泛的文件格式。它能夠解析和提取多種文檔類型的內(nèi)容,包括但不限于:- 辦公文檔: 如
Microsoft Word(.doc, .docx)、Excel(.xls, .xlsx)、PowerPoint(.ppt, .pptx)、OpenOffice(.odt, .ods)等。 PDF: 提取 PDF 文檔中的文本和元數(shù)據(jù)。HTML / XML: 解析 HTML 和 XML 格式的內(nèi)容。- 文本文件: 如 .txt 文件等。
- 圖片和音視頻: 支持圖像格式(如 JPEG、PNG)和音頻視頻格式(如 MP3、MP4、WAV 等),并能提取相關(guān)的元數(shù)據(jù)。
- 電子郵件: 如 EML 文件格式。
- 壓縮文件: 如 ZIP、TAR、GZ 等壓縮包中的文件內(nèi)容。
- 辦公文檔: 如
- 自動(dòng)文件類型檢測(cè)
Tika具有強(qiáng)大的文件類型自動(dòng)識(shí)別功能,可以根據(jù)文件內(nèi)容而非文件擴(kuò)展名來(lái)判斷文件的真實(shí)類型。它支持多種標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)文件類型的自動(dòng)識(shí)別,確保了高準(zhǔn)確度的格式識(shí)別。MIME類型識(shí)別:Tika可以準(zhǔn)確識(shí)別文件的MIME類型,幫助系統(tǒng)判斷如何處理和解析文件。 - 文本和元數(shù)據(jù)提取
Tika能夠從多種文件中提取出文本內(nèi)容和元數(shù)據(jù)。元數(shù)據(jù)通常包括作者、創(chuàng)建日期、修改日期、文件大小、版權(quán)信息等。- 文本提?。?無(wú)論文件格式如何,
Tika都能夠提取其中的文本信息。 - 元數(shù)據(jù)提?。?除了文本,
Tika還能提取各種元數(shù)據(jù),如作者、標(biāo)題、關(guān)鍵詞、修改時(shí)間等,方便進(jìn)一步的分析或索引。
- 文本提?。?無(wú)論文件格式如何,
- 支持 OCR(光學(xué)字符識(shí)別)
Tika集成了OCR引擎(如 Tesseract),能夠從掃描圖像或 PDF 文檔中的圖片提取文本信息。當(dāng)文件中包含圖像時(shí),Tika可以通過(guò)OCR功能識(shí)別圖像中的文字,并提取出來(lái)。 - 語(yǔ)言檢測(cè)
Tika具備自動(dòng)檢測(cè)文件文本語(yǔ)言的功能。通過(guò)分析提取的文本,Tika可以識(shí)別文檔的語(yǔ)言(如英語(yǔ)、中文、法語(yǔ)等),這一功能對(duì)多語(yǔ)言處理和文檔分類非常有用。 - 支持嵌入式應(yīng)用
Tika是以Java為主要開發(fā)語(yǔ)言的,且它不僅可以作為獨(dú)立應(yīng)用使用,還可以嵌入到其他 Java 應(yīng)用中。Tika提供了 Java API,使得開發(fā)者能夠輕松集成到各種應(yīng)用程序中,進(jìn)行自動(dòng)化的文件內(nèi)容提取和處理。Tika App: 命令行工具,適用于從文件提取內(nèi)容并輸出文本和元數(shù)據(jù)。Tika Server: 基于 RESTful API 的服務(wù),適合通過(guò) HTTP 協(xié)議與外部系統(tǒng)進(jìn)行交互,支持遠(yuǎn)程文件解析。
- 多線程支持
Apache Tika提供了并行處理的能力,允許在處理大批量文件時(shí),通過(guò)多線程方式提高處理速度。對(duì)于需要批量文件解析和內(nèi)容提取的場(chǎng)景,Tika 的多線程支持可以顯著提高效率。 - 內(nèi)容和元數(shù)據(jù)格式統(tǒng)一輸出
Tika 返回統(tǒng)一的輸出格式,不論文件類型如何,提取的文本和元數(shù)據(jù)都會(huì)按照標(biāo)準(zhǔn)的方式提供。這使得開發(fā)者能夠輕松地將不同格式的文件內(nèi)容統(tǒng)一處理。- JSON 格式輸出: Tika 可以將提取的內(nèi)容和元數(shù)據(jù)以 JSON 格式輸出,便于與其他系統(tǒng)集成和處理。
- XML 格式輸出: 除了 JSON 格式,Tika 也支持將內(nèi)容提取結(jié)果以 XML 格式輸出,適用于需要更結(jié)構(gòu)化數(shù)據(jù)的場(chǎng)景。
- 支持大文件處理
Tika支持處理大型文檔和多頁(yè)文檔,能夠高效地提取其中的內(nèi)容而不會(huì)占用過(guò)多的內(nèi)存。對(duì)于需要處理大量文檔或大文檔的應(yīng)用場(chǎng)景(如搜索引擎、大數(shù)據(jù)處理等),Tika 能夠提供可靠的支持。 - 與其他工具和庫(kù)的集成
Tika 還可以與其他工具和庫(kù)進(jìn)行集成,以擴(kuò)展其功能:Lucene / Solr / Elasticsearch: Tika 常常與這些搜索引擎集成,用于全文索引和搜索。Apache POI: Tika 使用Apache POI來(lái)解析 Microsoft Office 文件格式(如 .docx、.xlsx 等)。PDFBox: 用于解析和提取 PDF 文件內(nèi)容。Tesseract OCR: 用于從圖像中提取文本,特別適用于掃描文檔和圖片內(nèi)容。
- 高度可擴(kuò)展性
Tika提供了靈活的擴(kuò)展機(jī)制,用戶可以根據(jù)需求自定義解析器、增加新的文件格式支持或調(diào)整文本提取策略。通過(guò)定制 Tika 配置文件(如tika-config.xml),開發(fā)者可以配置不同類型文件的處理方式、修改默認(rèn)的解析器和行為等。Apache Tika的主要特性包括對(duì)多種文件格式的支持、自動(dòng)文件類型檢測(cè)、文本和元數(shù)據(jù)提取、OCR 支持、語(yǔ)言檢測(cè)、多線程處理、統(tǒng)一格式的輸出、以及與其他工具的無(wú)縫集成。這些特性使得 Tika 成為一個(gè)功能強(qiáng)大且靈活的內(nèi)容分析框架,適用于文檔管理、信息提取、搜索引擎、大數(shù)據(jù)處理等各種應(yīng)用場(chǎng)景。
1.1.2 Tika 架構(gòu)組件
Apache Tika 的架構(gòu)組件主要包括以下幾個(gè)核心部分,它們共同協(xié)作,以支持從各種文件格式中提取文本、元數(shù)據(jù)和其他信息。以下是 Apache Tika 的主要架構(gòu)組件:
- Tika Core
Tika Core是Apache Tika的核心組件,提供了文件解析、內(nèi)容提取的基礎(chǔ)功能。它包含了最基本的功能,如文檔類型識(shí)別、解析和提取文本內(nèi)容。Tika Core 是其他功能和模塊的基礎(chǔ)。- 文件解析(
Parser): 用于解析各種文件格式,返回提取的文本和元數(shù)據(jù)。 - 內(nèi)容提?。?code>Content Extraction): 提取文件中的內(nèi)容,包括文本、圖片、音頻、視頻等。
- 文件類型識(shí)別(
MIME Type Detection): 根據(jù)文件的內(nèi)容而不是擴(kuò)展名,判斷文件的實(shí)際類型(如 PDF、Word、Excel、HTML 等)。
- 文件解析(
- Tika Parsers
Tika Parsers是一組負(fù)責(zé)解析不同類型文件的組件。它們是 Tika 核心的關(guān)鍵組成部分,能處理多種格式,如文本文檔、電子表格、PDF、圖像、音頻等。Tika 會(huì)根據(jù)文件類型自動(dòng)選擇合適的解析器。- 文本解析器(
Text Parsers): 解析普通文本文件(如.txt、.xml、.html等)。 - 多媒體解析器(
Media Parsers): 解析圖片、音頻、視頻等多媒體文件。 - 文檔解析器(
Document Parsers): 解析各類辦公文檔,如 Word、Excel、PowerPoint、PDF 等。 - 元數(shù)據(jù)解析器(
Metadata Parsers): 提取文件中的元數(shù)據(jù),如作者、創(chuàng)建日期、修改日期、文件大小等。
- 文本解析器(
- Tika Config (配置管理)
Tika Config是用來(lái)管理 Tika 配置的模塊,允許用戶通過(guò)配置文件來(lái)定制 Tika 的行為。通過(guò) Tika Config,用戶可以指定特定的解析器、提取策略、字符集等設(shè)置。 - 配置文件: 可以通過(guò) tika-config.xml 文件來(lái)配置如何解析不同類型的文件。
- 自定義解析器和擴(kuò)展: 用戶可以自定義自己的解析器,并通過(guò)配置文件將其加入到 Tika 系統(tǒng)中。
- Tika App
Tika App是一個(gè)命令行工具,提供了一個(gè)易于使用的界面來(lái)調(diào)用 Tika 核心功能。Tika App可以直接從命令行運(yùn)行,用于文件內(nèi)容提取、文本和元數(shù)據(jù)的提取。它可以作為獨(dú)立應(yīng)用,也可以嵌入到其他 Java 應(yīng)用中。- 命令行接口(CLI): 提供簡(jiǎn)潔的命令行接口,允許用戶從命令行處理文件。
- 文件處理: 支持批量文件處理,可以提取文本、元數(shù)據(jù)等信息,并輸出到標(biāo)準(zhǔn)輸出或文件中。
- Tika Server
Tika Server是基于RESTful API的服務(wù)端組件,它允許通過(guò) HTTP 協(xié)議進(jìn)行遠(yuǎn)程調(diào)用。Tika Server為外部應(yīng)用提供了一個(gè)服務(wù)端接口,支持文件的上傳、內(nèi)容提取和處理。RESTful API: 通過(guò) HTTP 請(qǐng)求與 Tika Server 交互,可以上傳文件并獲取解析后的內(nèi)容或元數(shù)據(jù)。- 遠(yuǎn)程解析: 支持異步處理大文件和批量文件,適合與其他系統(tǒng)集成(如搜索引擎、云存儲(chǔ)服務(wù)等)。
- Tika Language Detection
Tika還提供了內(nèi)置的語(yǔ)言檢測(cè)功能,用于自動(dòng)識(shí)別提取文本的語(yǔ)言。語(yǔ)言檢測(cè)對(duì)于多語(yǔ)言支持的項(xiàng)目非常有用,可以幫助在文件內(nèi)容解析后識(shí)別出文本的語(yǔ)言類型,從而決定使用何種處理方式。- 語(yǔ)言識(shí)別: 基于文本內(nèi)容,自動(dòng)檢測(cè)文檔的語(yǔ)言(如英語(yǔ)、中文、法語(yǔ)等)。
- 集成支持: 語(yǔ)言檢測(cè)功能可與文本提取、內(nèi)容分析等流程結(jié)合使用,提高內(nèi)容的多語(yǔ)言處理能力。
- Tika Extractor
Tika Extractor是一個(gè)抽象層,提供一種統(tǒng)一的接口來(lái)提取文件的內(nèi)容。它將不同的文件解析器統(tǒng)一成一個(gè)接口,簡(jiǎn)化了對(duì)文件內(nèi)容的提取過(guò)程。通過(guò) Tika Extractor,用戶可以在不同的文件類型間進(jìn)行統(tǒng)一的操作,而無(wú)需關(guān)注具體的解析實(shí)現(xiàn)。- 統(tǒng)一接口: 通過(guò)統(tǒng)一的接口來(lái)處理不同格式的文件,簡(jiǎn)化文件內(nèi)容的提取流程。
- 自定義擴(kuò)展: 允許開發(fā)者根據(jù)需求擴(kuò)展提取器,支持更多的文件格式或自定義的內(nèi)容提取邏輯。
- Tika Metadata
Tika Metadata是用于管理文件元數(shù)據(jù)的組件。它提取并提供文件的各類元數(shù)據(jù),如作者、創(chuàng)建時(shí)間、修改時(shí)間、版權(quán)信息、文件大小等。Tika 支持提取來(lái)自各種文件格式的元數(shù)據(jù)。- 元數(shù)據(jù)提?。?從各種文件中提取出與文件相關(guān)的附加信息,如文件屬性、作者、標(biāo)題等。
- 統(tǒng)一格式: 返回標(biāo)準(zhǔn)化的元數(shù)據(jù)結(jié)構(gòu),方便與其他系統(tǒng)集成。
- Tika OCR (Optical Character Recognition)
Tika集成了 OCR 功能,利用開源的OCR引擎(如Tesseract)來(lái)提取圖像中的文本信息。當(dāng)文件中包含掃描圖像或照片時(shí),OCR 組件可以識(shí)別圖像中的文字并進(jìn)行提取。- 圖像文本識(shí)別: 提取圖像或掃描文檔中的文本內(nèi)容。
- 集成與擴(kuò)展: 可以與其他解析器結(jié)合,自動(dòng)處理包含圖像或掃描文檔的文件。
1.1.3 Tika 應(yīng)用場(chǎng)景
Apache Tika 是一個(gè)開源的內(nèi)容分析工具,主要用于從各種文件格式中提取文本、元數(shù)據(jù)和結(jié)構(gòu)化信息。它支持多種文件格式,包括文檔、電子表格、PDF、音頻、視頻、圖片等,具有強(qiáng)大的文件內(nèi)容解析能力。在真實(shí)項(xiàng)目中的應(yīng)用場(chǎng)景非常廣泛,以下是一些典型的應(yīng)用場(chǎng)景:
- 企業(yè)文檔管理系統(tǒng)
在大型企業(yè)或機(jī)構(gòu)中,文檔管理系統(tǒng)通常需要處理大量不同格式的文件(如 PDF、Word、Excel 等)。
通過(guò)Apache Tika,可以自動(dòng)化從這些文件中提取文本和元數(shù)據(jù)(如作者、創(chuàng)建時(shí)間、文件大小等),然后將其統(tǒng)一存儲(chǔ)到數(shù)據(jù)庫(kù)中,便于搜索、管理和索引。這種應(yīng)用使得企業(yè)能夠高效地進(jìn)行文檔歸檔、搜索和分類。
示例應(yīng)用:- 自動(dòng)化文檔提?。?提取文件中的關(guān)鍵信息,如合同中的條款、報(bào)價(jià)單中的價(jià)格等,幫助員工快速定位重要數(shù)據(jù)。
- 全文搜索功能: 通過(guò) Tika 提取的文本內(nèi)容,可以建立索引,提供快速的全文搜索功能,方便用戶查找所需的文檔。
- 內(nèi)容管理系統(tǒng)(CMS)
在內(nèi)容管理系統(tǒng)中,Apache Tika可用于自動(dòng)提取上傳文件的內(nèi)容,并將其轉(zhuǎn)換為可編輯的格式。這對(duì)于包含各種文檔格式(如文本、PDF、圖像等)的內(nèi)容管理非常有用,尤其是在網(wǎng)站和平臺(tái)中需要處理大量文件時(shí),Tika 可以提供統(tǒng)一的處理接口。
示例應(yīng)用:- 網(wǎng)站文件處理: 當(dāng)用戶上傳文件到網(wǎng)站時(shí),Tika 會(huì)自動(dòng)提取文件內(nèi)容(如從文檔中提取文本、從圖像中提取元數(shù)據(jù)),以便進(jìn)一步處理或存儲(chǔ)。
- 文件格式轉(zhuǎn)換:
Tika可以將上傳的文件轉(zhuǎn)換為統(tǒng)一的格式,方便后續(xù)編輯和展示。
- 數(shù)據(jù)分析與大數(shù)據(jù)平臺(tái)
在大數(shù)據(jù)分析中,Apache Tika可以被用于處理非結(jié)構(gòu)化數(shù)據(jù)(如文本、PDF、圖片、音頻文件等),并將這些數(shù)據(jù)轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)。通過(guò)Tika提取的文本可以進(jìn)一步進(jìn)行數(shù)據(jù)清洗、分類、聚類或文本挖掘等分析任務(wù)。
示例應(yīng)用:- 大數(shù)據(jù)處理: 在數(shù)據(jù)湖或大數(shù)據(jù)平臺(tái)中,Tika 可以幫助從不同來(lái)源(如電子郵件、文檔、圖片等)提取出可分析的文本數(shù)據(jù),以便進(jìn)行機(jī)器學(xué)習(xí)模型訓(xùn)練、情感分析或趨勢(shì)預(yù)測(cè)。
- 搜索引擎: 在搜索引擎中,Tika 提供的內(nèi)容解析能夠支持不同類型的文件索引和檢索功能,增強(qiáng)搜索結(jié)果的準(zhǔn)確性和全面性。
- 法律與合規(guī)性審查
在法律和合規(guī)性領(lǐng)域,企業(yè)常常需要對(duì)大量的合同、法律文書、電子郵件等進(jìn)行分析。Apache Tika 可以幫助自動(dòng)提取這些文檔中的關(guān)鍵信息,比如合同條款、支付細(xì)節(jié)、法律條文等,供律師和合規(guī)人員審查。
示例應(yīng)用:- 合同審核與分析: Tika 可用于從合同中提取重要的文本信息,如簽署日期、金額、條款內(nèi)容等,幫助審查人員快速識(shí)別文檔的核心內(nèi)容。
- 合規(guī)性檢查: 自動(dòng)提取和分類文檔中的合規(guī)信息,幫助企業(yè)檢測(cè)是否符合規(guī)定,并減少人工審核的工作量。
- 數(shù)字資產(chǎn)管理(DAM)
數(shù)字資產(chǎn)管理系統(tǒng)中,Apache Tika 被廣泛應(yīng)用于提取多媒體文件(如圖像、視頻、音頻文件等)的元數(shù)據(jù)和內(nèi)容。通過(guò)對(duì)圖片中的標(biāo)簽、視頻中的字幕或音頻文件中的元數(shù)據(jù)進(jìn)行解析,可以更好地管理和索引數(shù)字資產(chǎn)。
示例應(yīng)用:- 圖片和視頻內(nèi)容管理: Tika 可以自動(dòng)提取圖片和視頻的元數(shù)據(jù)(如拍攝時(shí)間、相機(jī)類型、分辨率等),并幫助構(gòu)建數(shù)字媒體庫(kù),提供基于內(nèi)容的搜索功能。
- 自動(dòng)分類和標(biāo)記: Tika 通過(guò)分析文件內(nèi)容和元數(shù)據(jù),能夠自動(dòng)進(jìn)行分類和標(biāo)記,幫助企業(yè)更高效地管理和訪問(wèn)數(shù)字資產(chǎn)。
- 信息安全與數(shù)據(jù)泄露防護(hù)
在信息安全領(lǐng)域,Apache Tika可以用于掃描文件中的敏感數(shù)據(jù)。例如,Tika 可以幫助企業(yè)檢測(cè)文件中是否包含敏感的個(gè)人信息(如身份證號(hào)、信用卡信息等),從而增強(qiáng)企業(yè)對(duì)數(shù)據(jù)泄露的防護(hù)能力。
示例應(yīng)用:- 敏感信息識(shí)別: 通過(guò) Tika 提取文件內(nèi)容后,進(jìn)行自動(dòng)化的敏感數(shù)據(jù)檢測(cè),識(shí)別可能包含個(gè)人敏感信息或機(jī)密數(shù)據(jù)的文件。
- 數(shù)據(jù)泄露防護(hù): 在企業(yè)系統(tǒng)中,Tika 可以協(xié)助檢查文件上傳和共享過(guò)程中的潛在風(fēng)險(xiǎn),確保不會(huì)無(wú)意間泄露敏感信息。
- 自動(dòng)化電子郵件分類
Apache Tika 還可以用于從電子郵件中提取內(nèi)容,幫助自動(dòng)分類郵件內(nèi)容。在許多企業(yè)或組織中,Tika 可被用于幫助識(shí)別電子郵件中的附件、鏈接或關(guān)鍵信息,進(jìn)而根據(jù)內(nèi)容進(jìn)行分類、存檔或自動(dòng)響應(yīng)。
示例應(yīng)用:- 郵件內(nèi)容提取與分類: Tika 能從電子郵件中提取文本,分析郵件的主題、發(fā)件人和正文內(nèi)容,幫助自動(dòng)化郵件分類并減少人工操作。
- 附件掃描與處理: Tika 可以分析電子郵件中的附件,并根據(jù)附件類型和內(nèi)容自動(dòng)執(zhí)行適當(dāng)?shù)奶幚沓绦颉?br />Apache Tika 在多個(gè)領(lǐng)域和項(xiàng)目中都具有廣泛的應(yīng)用,尤其適用于需要從各種不同格式的文件中提取和處理數(shù)據(jù)的場(chǎng)景。無(wú)論是企業(yè)文檔管理、法律審查、大數(shù)據(jù)分析,還是數(shù)字資產(chǎn)管理、信息安全等領(lǐng)域,Tika 都能夠通過(guò)統(tǒng)一的接口和強(qiáng)大的格式支持,幫助開發(fā)人員高效地實(shí)現(xiàn)內(nèi)容解析、數(shù)據(jù)提取和處理任務(wù)。
1.2 Tika 實(shí)現(xiàn)信息安全與數(shù)據(jù)泄露防護(hù)
在 Spring Boot 中集成 Apache Tika 用于 敏感信息識(shí)別 和 數(shù)據(jù)泄露防護(hù),我們可以在文件上傳時(shí)提取文件內(nèi)容,并在提取的文本中搜索潛在的敏感數(shù)據(jù),如身份證號(hào)、信用卡信息、電話號(hào)碼等。以下是一個(gè)完整的代碼示例,展示了如何實(shí)現(xiàn)敏感信息檢測(cè)和數(shù)據(jù)泄露防護(hù)。
1.2.1 pom.xml
首先,確保在 pom.xml(Maven)或 build.gradle(Gradle)中添加了 Apache Tika 和 Spring Boot Web 依賴。
Maven 依賴
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Apache Tika -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>1.2.2 創(chuàng)建敏感信息檢測(cè)邏輯
敏感信息的檢測(cè)通常涉及正則表達(dá)式(Regex),你可以使用常見的模式來(lái)檢測(cè)個(gè)人信息(如身份證號(hào)、信用卡號(hào)、電話號(hào)碼等)。創(chuàng)建一個(gè)服務(wù)類,用于掃描文件內(nèi)容并檢測(cè)這些敏感數(shù)據(jù)。
package com.example.tikademo.service;
import org.apache.tika.Tika;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.sax.BodyContentHandler;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
public class SensitiveInfoService {
private final Tika tika = new Tika(); // Tika 實(shí)例
// 正則表達(dá)式模式:身份證號(hào)、信用卡號(hào)、電話號(hào)碼
private static final String ID_CARD_REGEX = "(\\d{17}[\\dXx]|\\d{15})";
private static final String CREDIT_CARD_REGEX = "(\\d{4}-?\\d{4}-?\\d{4}-?\\d{4})";
private static final String PHONE_REGEX = "(\\d{3}-?\\d{3}-?\\d{4})|((\\d{11})|(\\d{3})\\d{7})";
// 提取文件內(nèi)容并檢測(cè)敏感信息
public String checkSensitiveInfo(InputStream fileInputStream) throws IOException {
// 1. 使用 Tika 提取文件內(nèi)容
String fileContent = tika.parseToString(fileInputStream);
// 2. 執(zhí)行敏感信息檢測(cè)
StringBuilder sensitiveInfoDetected = new StringBuilder();
// 檢測(cè)身份證號(hào)
detectAndAppend(fileContent, ID_CARD_REGEX, "身份證號(hào)", sensitiveInfoDetected);
// 檢測(cè)信用卡號(hào)
detectAndAppend(fileContent, CREDIT_CARD_REGEX, "信用卡號(hào)", sensitiveInfoDetected);
// 檢測(cè)電話號(hào)碼
detectAndAppend(fileContent, PHONE_REGEX, "電話號(hào)碼", sensitiveInfoDetected);
return sensitiveInfoDetected.length() > 0 ? sensitiveInfoDetected.toString() : "未檢測(cè)到敏感信息";
}
// 通用的檢測(cè)方法
private void detectAndAppend(String content, String regex, String label, StringBuilder result) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
result.append(label).append(": ").append(matcher.group()).append("\n");
}
}
}
期望的返回結(jié)果:
身份證號(hào): 123456789012345678
信用卡號(hào): 1234-5678-9876-5432
電話號(hào)碼: 138-1234-56781.2.3 創(chuàng)建文件上傳控制器
接下來(lái),我們將創(chuàng)建一個(gè)控制器,通過(guò) REST API 接受文件上傳請(qǐng)求,提取文件內(nèi)容并檢測(cè)是否含有敏感信息。文件上傳的處理通過(guò) MultipartFile 接收文件。
package com.example.tikademo.controller;
import com.example.tikademo.service.SensitiveInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
@RestController
@RequestMapping("/api/files")
public class FileController {
@Autowired
private SensitiveInfoService sensitiveInfoService;
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) {
try {
// 獲取上傳文件的輸入流
String result = sensitiveInfoService.checkSensitiveInfo(file.getInputStream());
return result;
} catch (IOException e) {
return "文件處理錯(cuò)誤: " + e.getMessage();
}
}
}到此這篇關(guān)于SpringBoot 整合 Apache Tika提取數(shù)據(jù)的文章就介紹到這了,更多相關(guān)SpringBoot Apache Tika提取數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA之配置JDK的4種方式(小結(jié))
這篇文章主要介紹了IntelliJ IDEA之配置JDK的4種方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Springboot支持Emoji表情的實(shí)現(xiàn)方法
本文主要介紹了Springboot 支持Emoji 表情,本篇的實(shí)現(xiàn)方式是僅需后端處理,具有一定的參考價(jià)值,需要的朋友可以參考一下。2021-07-07
如何解決Could not transfer artifact org.spri
在Maven更新過(guò)程中遇到“Could not transfer artifact org.springframework.boot”錯(cuò)誤通常是由于網(wǎng)絡(luò)問(wèn)題,解決方法是在Maven的設(shè)置中忽略HTTPS,添加特定語(yǔ)句后,可以正常下載依賴,但下載速度可能較慢,這是一種常見的解決方案,希望對(duì)遇到相同問(wèn)題的人有所幫助2024-09-09
Java中static關(guān)鍵字的作用和用法詳細(xì)介紹
這篇文章主要介紹了Java中static關(guān)鍵字的作用和用法詳細(xì)介紹,本文講解了static變量、靜態(tài)方法、static代碼塊、static和final一塊用等內(nèi)容,需要的朋友可以參考下2015-01-01
利用Spring Session和redis對(duì)Session進(jìn)行共享詳解
這篇文章主要給大家介紹了關(guān)于利用Spring、Session和redis對(duì)Session進(jìn)行共享的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
Java并發(fā)編程之線程池實(shí)現(xiàn)原理詳解
池化思想是一種空間換時(shí)間的思想,期望使用預(yù)先創(chuàng)建好的對(duì)象來(lái)減少頻繁創(chuàng)建對(duì)象的性能開銷,java中有多種池化思想的應(yīng)用,例如:數(shù)據(jù)庫(kù)連接池、線程池等,下面就來(lái)具體講講2023-05-05

