介紹python套件: pdfplumber實現簡單的pdf轉文字資料
pdfplumber是一個第三方套件,優點是可以處理中文pdf轉文字、語法簡潔。
透過Pip安裝套件
pip install pdfplumber
使用pdfplumber
首先載入套件並開啟pdf檔案:
import pdfplumber file_path= "./105WFA0850698_CM02.pdf" pdf = pdfplumber.open(file_path)
可以指定欲解析的pdf頁碼並解析文字:
page = 0 p0 = pdf.pages[page] text= p0.extract_text() print(text) >>> 二、 研究計畫中英文摘要:請就本計畫要點作一概述,並依本計畫性質自訂關鍵詞。 (一) 計畫中文摘要。(五百字以內) 台灣因為橫跨熱帶及亞熱帶氣候,且四面環海,海洋生物資源相當豐富,如何利用這些資源便成 為我國的重要課題。本研究團隊希望利用台灣所擁有的海洋生物多樣性資源,結合海洋天然物與蛋白 質研究以及現代化學快速篩選分析、生醫活性篩選等國內外領域研究專家,共同開發功能性海洋天然 產物應用資源,亦希望藉由此計畫探索海洋生物中所含活性天然物用於治療疾病之可行性。 近 30年來癌症已成為台灣社會的十大死因之首,威脅國人的生命,如肝癌、乳癌及胰臟癌皆造 成很大之生命及經濟之損失。另外,近年來每逢夏秋之際,台灣大眾就置身於登革熱的風暴之中。這 些健康問題至今仍未有妥善的解決方法,自海洋生物資源中開發嶄新有效的藥物便成為全球醫藥研發 工作者的新目標。 海洋生物的附著長期以來對水中人工表面,如船隻、海堤、油管等皆造成可觀的經濟損失,但市 面上現有的含抗附著(或稱抗污損)化合物塗料已知對海洋生物及人類皆能造成嚴重,甚而致命的危 害,因此開發對環境友善的抗汙損塗料是刻不容緩的。本計畫將從具有抗污損潛力的海洋生物身上取 得其化學防禦物質,測試其對抗污損的活性及應用價值。 本計畫將利用現代快篩分析技術與生物基因轉殖技術探索海洋功能性分子及建立相關資料庫,並 放大培養細菌、真菌、微藻等微生物與大量養殖軟珊瑚等特定海洋無脊椎動物,以開發高價位功能性 海洋天然產物與蛋白質,更進一步與國內外醫藥、造漆等產業合作,開發嶄新海洋功能性產物。 關鍵字: 海洋天然物、肝癌、乳癌、胰臟癌、抗污損活性、快篩技術、高價(值)分子
文字分析技巧 分段
這裡我們使用python的標準套件re抓取段落
首先用觀察pdf文件段落
可看到第一段為:
台灣因為橫跨熱帶及亞熱帶氣候,且四面環海,海洋生物資源相當豐富,如何利用這些資源便成 為我國的重要課題。本研究團隊希望利用台灣所擁有的海洋生物多樣性資源,結合海洋天然物與蛋白 質研究以及現代化學快速篩選分析、生醫活性篩選等國內外領域研究專家,共同開發功能性海洋天然 產物應用資源,亦希望藉由此計畫探索海洋生物中所含活性天然物用於治療疾病之可行性。
第二段為:
近 30 年來癌症已成為台灣社會的十大死因之首,威脅國人的生命,如肝癌、乳癌及胰臟癌皆造 成很大之生命及經濟之損失。另外,近年來每逢夏秋之際,台灣大眾就置身於登革熱的風暴之中。這 些健康問題至今仍未有妥善的解決方法,自海洋生物資源中開發嶄新有效的藥物便成為全球醫藥研發 工作者的新目標。
而pdf解析出的文字內容為:
台灣因為橫跨熱帶及亞熱帶氣候,且四面環海 ...
... ...
\n 近 30年來癌症已成為台灣社會的十大死...
可以看出此pdf解析後段落的字元為 \n + 一個Tab,可以此作為re的pattern
import re patterns= '\n ' paragraphs= text.split(patterns) for num, paragraph in enumerate(paragraphs): print('paragraph:', num) print(' ', paragraph.strip()) >>> paragraph: 0 二、 研究計畫中英文摘要:請就本計畫要點作一概述,並依本計畫性質自訂關鍵詞。 (一) 計畫中文摘要。(五百字以內) paragraph: 1 台灣因為橫跨熱帶及亞熱帶氣候,且四面環海,海洋生物資源相當豐富,如何利用這些資源便成 為我國的重要課題。本研究團隊希望利用台灣所擁有的海洋生物多樣性資源,結合海洋天然物與蛋白 質研究以及現代化學快速篩選分析、生醫活性篩選等國內外領域研究專家,共同開發功能性海洋天然 產物應用資源,亦希望藉由此計畫探索海洋生物中所含活性天然物用於治療疾病之可行性。 paragraph: 2 近 30年來癌症已成為台灣社會的十大死因之首,威脅國人的生命,如肝癌、乳癌及胰臟癌皆造 成很大之生命及經濟之損失。另外,近年來每逢夏秋之際,台灣大眾就置身於登革熱的風暴之中。這 些健康問題至今仍未有妥善的解決方法,自海洋生物資源中開發嶄新有效的藥物便成為全球醫藥研發 工作者的新目標。 paragraph: 3 海洋生物的附著長期以來對水中人工表面,如船隻、海堤、油管等皆造成可觀的經濟損失,但市 面上現有的含抗附著(或稱抗污損)化合物塗料已知對海洋生物及人類皆能造成嚴重,甚而致命的危 害,因此開發對環境友善的抗汙損塗料是刻不容緩的。本計畫將從具有抗污損潛力的海洋生物身上取 得其化學防禦物質,測試其對抗污損的活性及應用價值。 paragraph: 4 本計畫將利用現代快篩分析技術與生物基因轉殖技術探索海洋功能性分子及建立相關資料庫,並 放大培養細菌、真菌、微藻等微生物與大量養殖軟珊瑚等特定海洋無脊椎動物,以開發高價位功能性 海洋天然產物與蛋白質,更進一步與國內外醫藥、造漆等產業合作,開發嶄新海洋功能性產物。 關鍵字: 海洋天然物、肝癌、乳癌、胰臟癌、抗污損活性、快篩技術、高價(值)分子
pdf To Txt
file_path='txt_dir/pdf_02.txt' with open(file_path, 'w+', encoding='utf-8') as f: for paragraph in paragraphs: par = re.sub('\n',' ',par) f.write("%s\n" % par)
範例提供一個簡單工具實現pdf轉文字
對於一個pdf文件,轉化的過程如下:
1. 解析出文字內容,人工觀察文件中段落的位置
2. 找出可能的pattern後,以regular expression抓取段落
3. 寫入到txt檔
這邊再提供一個試regular expression的工具 : https://regex101.com/
這個網頁有良好的介面觀察以不同pattern去切文字的輸出結果,支援多種語法
有了簡單的框架後,我們可以取得大量pdf文件,並且轉化成文字資料,用於訓練模型做以文找文以及其他NLP任務
結語
pdfplumber具有解析圖片以及文字的功能,語法在github上有詳細的介紹
pdfplumber的優點為語法簡潔,然而使用任何pdf轉文字工具都可能會有解析上的錯誤(尤其是非英語系文字),因此比較潮的做法都是用深度學習的方法做,之後有緣的話再提供相關的工具了~~
### 我的叡揚資訊鐵人賽第一篇 ㄎㄎ