Как читать pdf файлы по одному из папки в python - PullRequest
0 голосов
/ 28 октября 2018

Я читаю pdf файлы и пытаюсь извлечь из них ключевые слова с помощью методов NLP. Сейчас программа принимает один pdf за раз.У меня есть папка, скажем, на диске D с именем 'pdf_docs'.Папка содержит много документов в формате PDF.Моя цель - прочитать каждый PDF-файл один за другим из папки.Как я могу сделать это в Python.Код, успешно работающий до сих пор, выглядит следующим образом.

import PyPDF2

file = open('abc.pdf','rb')


fileReader = PyPDF2.PdfFileReader(file)

count = 0

while count < 3:

    pageObj = fileReader.getPage(count)
    count +=1
    text = pageObj.extractText()

Ответы [ 3 ]

0 голосов
/ 28 октября 2018

вы можете использовать glob для того, чтобы использовать сопоставление с образцом для получения списка всех файлов pdf в вашем каталоге.

import glob

pdf_dir = "/foo/dir"

pdf_files = glob.glob("%s/*.pdf" % pdf_dir)
for file in pdf_files:
    do_your_stuff()
0 голосов
/ 07 апреля 2019
import PyPDF2
import re
import glob

#your full path of directory
mypath = "dir"
for file in glob.glob(mypath + "/*.pdf"):
    print(file)
    if file.endswith('.pdf'):
        fileReader = PyPDF2.PdfFileReader(open(file, "rb"))
        count = 0
        count = fileReader.numPages
        while count >= 0:
            count -= 1
            pageObj = fileReader.getPage(count)
            text = pageObj.extractText()
            print(text)
        num = re.findall(r'[0-9]+', text)
        print(num)
    else:
        print("not in format")

Давайте пройдемся по коду: В python мы не можем нормально обрабатывать файлы PDF.поэтому нам нужно установить пакет PyPDF2, а затем импортировать пакет.Функция «glob» используется для чтения файлов внутри каталога.используя цикл for, чтобы получить файлы внутри папки.Теперь проверьте тип файла в формате PDF или нет, используя условие «если».Теперь мы читаем PDF-файлы в папке, используя функцию «PdfFileReader».затем получить количество страниц в документе PDF.Используя цикл while для получения всех страниц и печати всего текста в файле.

0 голосов
/ 28 октября 2018

Сначала прочитайте все файлы, доступные в этом каталоге

from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]

И затем запустите свой код для каждого файла в этом списке

import PyPDF2
from os import listdir
from os.path import isfile, join


onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for file in onlyfiles:
    fileReader = PyPDF2.PdfFileReader(open(file,'rb'))

    count = 0

    while count < 3:

        pageObj = fileReader.getPage(count)
        count +=1
        text = pageObj.extractText()

os.listdir () даст вам все, что находится в каталоге - файлы и каталоги.Поэтому будьте осторожны, чтобы в вашем пути были только файлы pdf, или вам потребуется реализовать простую фильтрацию списка.

Редактировать 1

Вы также можете использовать модуль glob , так какон выполняет сопоставление с образцом.

>>> import glob
>>> print(glob.glob('/home/rszamszur/*.sh'))
['/home/rszamszur/work-monitors.sh', '/home/rszamszur/default-monitor.sh', '/home/rszamszur/home-monitors.sh']

Ключевое различие между модулем OS и glob заключается в том, что ОС будет работать для всех систем, где glob только для Unix, как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...