6

Is there any Python module to convert PDF files into text? I tried one piece of code (mirror) found in Activestate which uses pypdf but the text generated had no space between and was of no use.


This question was originally posted on stack overflow by cnu but it got closed.

2

9 Answers 9

5

The python pdfminer2 or pdfminer3k/pdfminer.six for python 3 libraries can extract the text from pdf files that contain text, (note that scanned documents stored as pdf will contain no text or an attempt at OCR).

It includes the command line pdf2txt.py utility to allow convenient use in the terminal.

Update Nov 2020

However, you might find it worth looking at pdf-scraper-with-ocr which provides a GUI to allow you to select the regions of a scanned document to convert, pages to skip, etc. then outputs them as images an uses Tesseract to OCR the images into named fields for you.

Given that it is based on Python and Tesseract both of which are multi-platform this should work on just about any platform.

3

The easiest way to manage pdf in python is PyPDF2 also you can extract text and other information like pages, author, creator...

You said you tried pypdf but it is an outdated version and this issue could be solved. Maybe your problem is with an specific file. If PyPDF2 does not solve your trouble, Did you see unix command pdftotext?? Does it gives you a correct output?

3

I have worked with two PDF modules: PyPDF2 and pdfminer.six

PDFminer.six is more reliable than PyPDF2 but 6 times slower (timed).

Here is a working code example for PDFminer.six, the documentation is a little sparse: https://stackoverflow.com/a/61857301/7483211

2
  • Thanks for sharing your experience! May 18, 2020 at 1:25
  • 1
    PyPDF2 got a big improvement today. You might want to try it again :-) Jun 6 at 21:09
2

The only solution that worked for me for UTF-8 content: Apache Tika

from tika import parser
parsed = parser.from_file('/path/to/file.pdf')
print(parsed["content"])
0
1

PyPDF2 is maintained again and received a massive text extraction improvement with PyPDF2==2.1.0.

Usage

Install it: pip install PyPDF2 --upgrade

from PyPDF2 import PdfReader

reader = PdfReader("example.pdf")

text = ""
for page in reader.pages:
    text += page.extract_text() + "\n"

print(text)

More in the docs

Benchmark

My benchmark shows that Tika / MuPDF / PDFium still have better extraction quality. However, there are two important things to consider:

  1. PyPDF2 is a pure-python package without dependencies. This makes it way simpler to install.
  2. PyPDF2 is free and open source software (using the BSD 3-clause license).
1
0

You can use GroupDocs.Conversion Cloud SDK for Python to convert PDF to Text. It can convert other common file formats to text as well. Its free package plan provides 50 free credits per month.

I'm developer evangelist at Aspose.

0

https://github.com/kermitt2/grobid + https://github.com/kermitt2/grobid-client-python:

  • extract information from scholarly documents
  • the two repos are Apache-2.0
  • Full text extraction and structuring from PDF articles, including a model for the overall document segmentation and models for the structuring of the text body (paragraph, section titles, reference callout, figure, table, etc.).

  • grobid is in Java and can be called as a service via Python with https://github.com/kermitt2/grobid-client-python
0

https://github.com/allenai/spv2:

  • no longer maintained
  • no license
  • focuses on academic articles
0

https://github.com/allenai/science-parse:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.