Pełne ujawnienie, jestem jednym z opiekunów pdfminer.six.
Obecnie istnieje wiele interfejsów API do wyodrębniania tekstu z pliku PDF, w zależności od potrzeb. W tle wszystkie te interfejsy API używają tej samej logiki do analizowania i analizowania układu.
(We wszystkich przykładach przyjęto, że plik PDF nosi nazwę przykład.pdf )
Wiersz poleceń
Jeśli chcesz wyodrębnić tekst tylko raz, możesz użyć narzędzia wiersza poleceń pdf2txt.py:
$ pdf2txt.py example.pdf
Interfejs API wysokiego poziomu
Jeśli chcesz wyodrębnić tekst za pomocą Pythona, możesz użyć interfejsu API wysokiego poziomu. To podejście jest najlepszym rozwiązaniem, jeśli chcesz programowo wyodrębnić tekst z wielu plików PDF.
from pdfminer.high_level import extract_text
text = extract_text('example.pdf')
Komponowalne API
Istnieje również komponowalny interfejs API, który zapewnia dużą elastyczność w obsłudze wynikowych obiektów. Na przykład możesz zaimplementować własny algorytm układu, używając tego. Ta metoda jest sugerowana w innych odpowiedziach, ale poleciłbym ją tylko wtedy, gdy musisz dostosować sposób zachowania pdfminer.six.
from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
output_string = StringIO()
with open('example.pdf', 'rb') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
print(output_string.getvalue())