Как разбить PDF на абзацы с помощью Tika - PullRequest
1 голос
/ 29 октября 2019

У меня есть документ PDF, который я сейчас анализирую, используя Tika-Python. Я хотел бы разбить документ на абзацы.

Моя идея состоит в том, чтобы разбить документ на абзацы и затем создать список абзацев с помощью функции isspace()

Я также попытался разбить, используя \n\n однако ничего не работает.

Это мой текущий код:

file_data = (parser.from_file('/Users/graziellademartino/Desktop/UNIBA/Research Project/UK cases/file1.pdf'))
file_data_content = file_data['content']

paragraph = ''
for line in file_data_content:
    if line.isspace():  
        if paragraph:
            yield paragraph
            paragraph = ''
        else:
            continue
    else:
        paragraph += ' ' + line.strip()
yield paragraph

1 Ответ

0 голосов
/ 29 октября 2019

Я не могу быть уверен, как выглядит file_data_content, потому что я не знаю, что вы используете для обработки ваших PDF-данных и что они возвращают. Но если он возвращает базовую строку, такую ​​как Line1\nLine2\netc., то должно работать следующее ниже. Когда вы говорите:

for line in file_data_content:

и file_data_content - строка, вы обрабатываете строку символ за символом, а не строку за строкой, и это, несомненно, будет проблемой. Таким образом, вам нужно разбить текст на список строк и обработать каждый элемент этого списка:

def create_paragraphs(file_data_content):
    lines = file_data_content.splitlines(True)
    paragraph = []
    for line in lines:
        if line.isspace():
            if paragraph:
                yield ''.join(paragraph)
                paragraph = []
        else:
            paragraph.append(line)
    if paragraph:
        yield ''.join(paragraph)

text="""Line1
Line2

Line3
Line4


Line5"""

print(list(create_paragraphs(text)))

Отпечатки:

['Line1\nLine2\n', 'Line3\nLine4\n', 'Line5']
...