Преобразование текстового содержимого PDF

У меня есть PDF-файл с несколькими текстовыми блоками, которые смещены. Я пытаюсь создать новый PDF-файл с выровненным текстом в соответствии с моей матрицей преобразования (известной). я могу использоватьPyMuPDF(fitz), чтобы извлечь текстовую информацию из исходного PDF-файла и вставить текст в целевой PDF-файл, но таким образом я теряю всю структурную информацию (блоки, строки, промежутки и т. д.):

      import fitz

src_doc = fitz.open('my.pdf')
tgt_doc = fitz.open()

src_page = doc[0]
tgt_page = tgt_doc[0]

text_dict = src_page.get_text('dict')
transform = fitz.Matrix(1, 1) # would be non-identity in practice
tw = fitz.TextWriter(tgt_page.rect)

for block in text['blocks']:
    if block['type'] != 1: # ignore images
        blocks.append(block)
        for line in block['lines']:
            for span in line['spans']:                      
                tw.append(span['origin'], span['text'])

tw.write_text(tgt_page, morph=[fitz.Point([0.0, 0.0]), transform])

tgt_doc.save('aligned.pdf')
src_doc.close()
tgt_doc.close()

Это выполняет работу по выравниванию текста, однако теряет всю информацию о структуре текста.tgt_pageбудет иметь больше блоков, чемsrc_page.

Могу ли я сделать то же самое без ущерба для структуры страницы?

Первоначально я использовал то, что используется в ocrmypdf , но, к сожалению,pikepdfподдерживает только символы ASCII. У меня возникают проблемы с использованием его для нелатинского текста. Любая другая библиотека, выполняющая эту работу, также подойдет.

0 ответов

Другие вопросы по тегам