利用Python提取PDF文本的簡單方法實例
你好,一般情況下,Ctrl+C 是最簡單的方法,當無法 Ctrl+C 時,我們借助于 Python,以下是具體步驟:
第一步,安裝工具庫
1、tika — 用于從各種文件格式中進行文檔類型檢測和內(nèi)容提取
2、wand — 基于 ctypes 的簡單 ImageMagick 綁定
3、pytesseract — OCR 識別工具
創(chuàng)建一個虛擬環(huán)境,安裝這些工具
python -m venv venv source venv/bin/activate pip install tika wand pytesseract
第二步,編寫代碼
假如 pdf 文件里面既有文字,又有圖片,以下代碼可以直接識別文字:
import io
import pytesseract
import sys
from PIL import Image
from tika import parser
from wand.image import Image as wi
text_raw = parser.from_file("example.pdf")
print(text_raw['content'].strip())這還不夠,我們還需要能失敗圖片的部分:
def extract_text_image(from_file, lang='deu', image_type='jpeg', resolution=300):
print("-- Parsing image", from_file, "--")
print("---------------------------------")
pdf_file = wi(filename=from_file, resolution=resolution)
image = pdf_file.convert(image_type)
image_blobs = []
for img in image.sequence:
img_page = wi(image=img)
image_blobs.append(img_page.make_blob(image_type))
extract = []
for img_blob in image_blobs:
image = Image.open(io.BytesIO(img_blob))
text = pytesseract.image_to_string(image, lang=lang)
extract.append(text)
for item in extract:
for line in item.split("\n"):
print(line)合并一下,完整代碼如下:
import io
import sys
from PIL import Image
import pytesseract
from wand.image import Image as wi
from tika import parser
def extract_text_image(from_file, lang='deu', image_type='jpeg', resolution=300):
print("-- Parsing image", from_file, "--")
print("---------------------------------")
pdf_file = wi(filename=from_file, resolution=resolution)
image = pdf_file.convert(image_type)
for img in image.sequence:
img_page = wi(image=img)
image = Image.open(io.BytesIO(img_page.make_blob(image_type)))
text = pytesseract.image_to_string(image, lang=lang)
for part in text.split("\n"):
print("{}".format(part))
def parse_text(from_file):
print("-- Parsing text", from_file, "--")
text_raw = parser.from_file(from_file)
print("---------------------------------")
print(text_raw['content'].strip())
print("---------------------------------")
if __name__ == '__main__':
parse_text(sys.argv[1])
extract_text_image(sys.argv[1], sys.argv[2])第三步,執(zhí)行
假如 example.pdf 是這樣的:

在命令行這樣執(zhí)行:
python run.py example.pdf deu | xargs -0 echo > extract.txt
最終 extract.txt 的結果如下:
-- Parsing text example.pdf --
---------------------------------
Title pure text
Content pure text
Slide 1
Slide 2
---------------------------------
-- Parsing image example.pdf --
---------------------------------
Title pure text
Content pure text
Title in image
Text in image
你可能會問,如果是簡體中文,那個 lang 參數(shù)傳遞什么,傳 'chi_sim',其實是有官方說明的,鏈接如下:
https://github.com/tesseract-ocr/tessdoc/blob/main/Data-Files-in-different-versions.md

最后的話
從 PDF 中提取文本的腳本實現(xiàn)并不復雜,許多庫簡化了工作并取得了很好的效果
到此這篇關于利用Python提取PDF文本的簡單方法的文章就介紹到這了,更多相關Python提取PDF文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
利用Python自帶PIL庫擴展圖片大小給圖片加文字描述的方法示例
最近的一個工程項目是講文字添加到圖像上,所以下面這篇文章主要給大家介紹了關于利用Python自帶PIL庫擴展圖片大小給圖片加文字描述的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-08-08
http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式
這篇文章主要介紹了http通過StreamingHttpResponse完成連續(xù)的數(shù)據(jù)傳輸長鏈接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Tensorflow訓練MNIST手寫數(shù)字識別模型
這篇文章主要為大家詳細介紹了Tensorflow訓練MNIST手寫數(shù)字識別模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02
從np.random.normal()到正態(tài)分布的擬合操作
這篇文章主要介紹了從np.random.normal()到正態(tài)分布的擬合操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
python爬取Ajax動態(tài)加載網(wǎng)頁過程解析
這篇文章主要介紹了python爬取Ajax動態(tài)加載網(wǎng)頁過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09
詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼
很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便,作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動登錄呢,下面我們就來看看吧2023-08-08
Python隨機數(shù)種子(random seed)的使用
在科學技術和機器學習等其他算法相關任務中,我們經(jīng)常需要用到隨機數(shù),本文就詳細的介紹一下Python隨機數(shù)種子,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07

