Есть ли какой-либо способ идентифицировать зачеркнутые слова в файле PDF при разборе его с помощью Python?

#python #parsing #pdf #pymupdf

#python #синтаксический анализ #PDF #pymupdf

Вопрос:

Я разбираю файл PDF с помощью PyMuPDF (кстати, отличная библиотека!)

Но мне нужно идентифицировать слова, которые зачеркнуты.

Есть ли какой-нибудь способ сделать это?

Комментарии:

1. можете ли вы включить образец PDF?

Ответ №1:

Документы PyMuPDF, похоже, не говорят о вычеркнутых (вычеркнутых), за исключением случаев, когда речь идет о аннотациях, но они говорят об этих «флагах».

 bit 0: superscripted (20)
bit 1: italic (21)
bit 2: serifed (22)
bit 3: monospaced (23)
bit 4: bold (24)
  

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

Один из способов получить доступ к этим кодам — через структуру словаря textPage с использованием тега spam. Дополнительную информацию об этом см. 6.18.1.4 Span Dictionary в документах.

Я хотел выделить жирный текст из документов и написал эту функцию

 def get_bold_text_from_PDF_page(page_number):
    '''
    Function to get bold text from PyMUPDF Page object
    Parameters:
            PyMUPDF doc generator object
    Returns:
            list of dictionaries each dictionary contains these fields:
            Size, flags, font, color, ascender, decender, text, origin, bbox, page_number
    '''
    blocks = fitz.Page.get_text(page_number, "dict", flags=11)["blocks"]
    page_bold_text_list = []
    for block in blocks:  
        for line in block["lines"]: 
            for span in line["spans"]: 
                if span['flags'] == 20:  # change the 20 here.
                    span['page_number'] = page.number  
                    page_bold_text_list.append(span)
                    print(page_bold_text_list)
    return page_bold_text_list
  

Как ни странно для меня 20 было выделено жирным шрифтом.

Возможно, стоит прочитать эти документы Adobehttps://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf