Я читаю сотни PDF-файлов, чтобы извлечь реферат. Моя стратегия:
(1) разделить после разделителя abstract
(2) читать аннотацию
(3) остановить, когда пустая строка.
Вот код, который может сделать это:
import re
raw = ' Some text\n\nABSTRACT\nExtract \nthis text\n\nOther text'
pattern = 'abstract'
abstract = re.split(pattern ,raw, flags=re.IGNORECASE)[1].split("\n\n")[0]
print(abstract)
Проблема заключается в том, что разные pdf-файлы могут содержать разные формы для моих разделителей, таких как abstract:
, abstract:\n
, abstract\n
, которые все являются вложенными. Соответственно я попробовал что-то вроде этого:
import re
raw = ' Some text\n\nAbstract:\n\nExtract \nthis text\n and include
abstraction and Abstraction \n\nOther text'
pattern = 'abstract|abstract:|abstract:\n'
abstract = re.split(pattern, raw, flags=re.IGNORECASE)[1].split("\n\n")[0]
print(abstract)
Тем не менее, это не сработало для приведенного выше примера. Кроме того, этот код не будет работать для точного соответствия. Например, он не будет игнорировать abstraction
и Abstraction