利用Python提取PDF文本的簡單方法實例
你好,一般情況下,Ctrl+C 是最簡單的方法,當(dāng)無法 Ctrl+C 時,我們借助于 Python,以下是具體步驟:
第一步,安裝工具庫
1、tika — 用于從各種文件格式中進(jìn)行文檔類型檢測和內(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 的結(jié)果如下:
-- 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)并不復(fù)雜,許多庫簡化了工作并取得了很好的效果
到此這篇關(guān)于利用Python提取PDF文本的簡單方法的文章就介紹到這了,更多相關(guān)Python提取PDF文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pandas.DataFrame重置Series的索引index(reset_index)
本文主要介紹了Pandas.DataFrame重置Series的索引index(reset_index),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Python中的np.argmin()和np.argmax()函數(shù)用法
這篇文章主要介紹了Python中的np.argmin()和np.argmax()函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
python利用高階函數(shù)實現(xiàn)剪枝函數(shù)
這篇文章主要為大家詳細(xì)介紹了python利用高階函數(shù)實現(xiàn)剪枝函數(shù)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
用Python編寫一個簡單的FUSE文件系統(tǒng)的教程
這篇文章主要介紹了用Python編寫一個簡單的FUSE文件系統(tǒng)的教程,對于數(shù)據(jù)的備份很有幫助,需要的朋友可以參考下2015-04-04
python3.7.3版本和django2.2.3版本是否可以兼容
在本篇文章里小編給大家整理的是一篇關(guān)于python3.7.3版本和django2.2.3版本是否可以兼容的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-09-09

