spacypdfreader.pdf_reader()
Convert a PDF document to a spaCy Doc object.
Usage
spacypdfreader.pdf_reader(
pdf_path,
nlp,
pdf_parser=pdfminer.parser,
verbose=False,
n_processes=None,
page_range=None,
**kwargs
)Parameters
pdf_path: str-
Path to a PDF file.
nlp: spacy.Language-
A spaCy Language object with a loaded pipeline. For example
spacy.load("en_core_web_sm"). pdf_parser: Callable = pdfminer.parser-
The parser to convert PDF file to text. Read the docs for more details. Defaults to pdfminer.parser.
verbose: bool = False-
If True details will be printed to the terminal. By default, False.
n_processes: Optional[int] = None-
The number of process to use for multi-processing. If
None, multi-processing will not be used. page_range: Optional[Iterable[int]] = None-
The page range of the PDF to convert from PDF to text. Must be one digit based indexing (e.g. the first page of the PDF is page 1, as opposed to page 0). If
Noneall pages will be converted. **kwargs: Any-
Arbitrary keyword arguments to pass to the underlying functions that extract text from the PDFs. If using pdfminer (the default)
**kwargswill be passed topdfminer.high_level.extract_text. If using spacypdfreader.parsers.pytesseract.parser**kwargswill be passed topytesseract.image_to_string.
Returns
spacy.tokens.Doc- A spacy Doc object with the custom extensions.
Examples
By default pdfminer is used to extract text from the PDF.
>>> import spacy
>>> from spacypdfreader import pdf_reader
>>>
>>> nlp = spacy.load("en_core_web_sm")
>>> doc = pdf_reader("tests/data/test_pdf_01.pdf", nlp)To be more explicit import pdfminer.parser and pass it into the pdf_reader function.
>>> import spacy
>>> from spacypdfreader import pdf_reader
>>> from spacypdfreader.parsers import pdfminer
>>>
>>> nlp = spacy.load("en_core_web_sm")
>>> doc = pdf_reader("tests/data/test_pdf_01.pdf", nlp, pdfminer.parser)Alternative parsers can be used as well such as pytesseract.
>>> import spacy
>>> from spacypdfreader import pdf_reader
>>> from spacypdfreader.parsers import pytesseract
>>>
>>> nlp = spacy.load("en_core_web_sm")
>>> doc = pdf_reader("tests/data/test_pdf_01.pdf", nlp, pytesseract.parser)For more fine tuning you can pass in additional parameters to pytesseract.
>>> import spacy
>>> from spacypdfreader import pdf_reader
>>> from spacypdfreader.parsers import pytesseract
>>>
>>> nlp = spacy.load("en_core_web_sm")
>>> params = {"nice": 1}
>>> doc = pdf_reader("tests/data/test_pdf_01.pdf", nlp, pytesseract.parser, **params)You can speed up spacypdfreader by using multiple processes.
>>> import spacy
>>> from spacypdfreader import pdf_reader
>>> from spacypdfreader.parsers import pytesseract
>>>
>>> nlp = spacy.load("en_core_web_sm")
>>> doc = pdf_reader("tests/data/test_pdf_01.pdf", nlp, pytesseract.parser, n_processes=4)To extract a specific range of pages, use the page_range argument.
>>> import spacy
>>> from spacypdfreader import pdf_reader
>>> from spacypdfreader.parsers import pytesseract
>>>
>>> nlp = spacy.load("en_core_web_sm")
>>> doc = pdf_reader("tests/data/test_pdf_01.pdf", nlp, pytesseract.parser, n_processes=4, page_range=(2, 3))