Я пытаюсь создать программу, которая просматривает папку PDF-файлов, извлекает текст и подсчитывает случаи появления «профессора откровенного». Я могу заставить циклы и извлечение текста работать нормально, но только с учетом количества ключевых слов. Мой код считает каждую страницу, и это нормально, но когда я экспортирую ее через Pandas, он просто экспортирует весь список, каждый со счетчиком на страницу. Я подумал, что могу просто запустить команду Sum и посчитать итоговые значения для каждого PDF, но я что-то упустил. Для простоты я просто использую два файла PDF здесь. В итоге, я хочу один простой подсчет частоты, с которой «профессор Фрэнк» появляется в каждом файле PDF, и я что-то здесь упускаю, вероятно, из-за того, как я зацикливаюсь.
Мой текущий выход (с использованием разделителя канала) - и с моим текущим счетчиком, и с желаемым:
TEXT | FILE_LOCATION | CURRENT_FRANK_COUNT | DESIRED_FRANK_COUNT
Это статья. | C: \ PDF \ Test \ file1.pdf | 1,2,0,0,0,1,2,1 | 6
Это вторая статья. | C: \ PDF \ Test \ file2.pdf | 1,0,0,0,0,2,1,1 | 5
import re
import PyPDF2
import os, sys
import pandas as pd
path = r"C:\PDF\Test"
files = []
for r, d, f in os.walk(path):
for file in f:
if '.' in file:
files.append(os.path.join(r,file))
out = []
for file in files:
with open(file,'rb') as pdf_file:
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
alltext = []
allfrankcount = []
for page_number in range(number_of_pages):
page = read_pdf.getPage(page_number)
page_content = page.extractText().encode('ascii', 'ignore').strip()
page_content = str(page_content)
xx = page_content.split('\\n')
xx = " ".join(xx)
xx = str(xx)
alltext.append(xx)
s = xx.lower()
frank_count = len(re.findall(r'(?=professor frank)', s))
allfrankcount.append(frank_count)
for a in allfrankcount: #I know this doesn't work, but I want to demonstrate that I tried
a = int(a) # ditto
papertotal = sum(a)# ditto
data = {'text': alltext, 'file': file, 'frank_count': allfrankcount}
out.append(data)
df = pd.DataFrame(out)
df.to_excel('frankoutput.xlsx')
Любая помощь приветствуется.