Преобразование PDF-документов в редактируемые файлы Microsoft Word позволяет вносить изменения, добавлять аннотации и более эффективно работать с PDF-контентом.
В этом блоге я собрал 5 решений для конвертации PDF в Word на Python с использованием бесплатных библиотек с открытым исходным кодом или коммерческих библиотек, а также выделил плюсы и минусы каждого решения.
Конвертация PDF в Word с помощью PyPDF2 и python-docx
Конвертация PDF в Word с помощью pdfplumber и python-docx
Конвертация PDF в Word с помощью pdf2docx
Конвертация PDF в Word с помощью Spire.PDF for Python
Конвертация PDF в Word с помощью Aspose.Words for Python via .NET
Конвертация PDF в Word с помощью PyPDF2 и python-docx
PyPDF2 — это бесплатная библиотека с открытым исходным кодом для работы с PDF‑файлами на Python, предоставляющая широкий набор функций для чтения, манипулирования и обработки PDF‑документов.
python‑docx — свободная библиотека с открытым исходным кодом для создания и обновления файлов Microsoft Word (.docx).
Чтобы установить их через PyPI, используйте следующие команды pip.
pip install PyPDF2
pip install python-docx
Пример кода:
from PyPDF2 import PdfReader
from PyPDF2 import PdfWriter
from docx import Document
from docx.shared import Inches
# Создание нового документа Word
document = Document()
# Открытие PDF-файла
with open("C:\\Users\\Administrator\\Desktop\\Input.pdf", "rb") as file:
# Создание объекта PdfReader
pdf_reader = PdfReader(file)
# Открытие документа Word для записи
with open("output.docx", "wb") as output_file:
# Перебор каждой страницы PDF-файла
for page_num in range(len(pdf_reader.pages)):
# Получение текущей страницы
page = pdf_reader.pages[page_num]
# Извлечение текста со страницы
text = page.extract_text()
# Добавление абзаца в Word, содержащего текст
document.add_paragraph(text)
# Сохранение документа Word
document.save("output.docx")
Плюсы:
Бесплатно.
Минусы:
Только текст будет извлечен и помещен в документ Word.
Все форматирование и оформление исходного PDF-файла будут потеряны.
Конвертация PDF в Word с помощью pdfplumber и python-docx
python-docx — это бесплатная библиотека с открытым исходным кодом для создания и обновления файлов Microsoft Word (.docx).
pdfplumber — свободная библиотека Python с открытым исходным кодом для извлечения текста и таблиц из PDF-файлов.
Вы можете установить их через PyPI с помощью следующих команд.
pip install pdfplumber
pip install python-docx
Пример кода:
import pdfplumber
from docx import Document
from docx.shared import Inches
# Открытие PDF-файла
with pdfplumber.open("C:\\Users\\Administrator\\Desktop\\Input.pdf") as pdf:
# Извлечение текста из PDF
text = ""
for page in pdf.pages:
text += page.extract_text()
# Создание нового документа Word
document = Document()
# Добавление абзаца в Word, содержащего текст
document.add_paragraph(text)
# Сохранение документа Word
document.save("output.docx")
Плюсы:
Бесплатно.
Минусы:
Только текст будет извлечен и помещен в документ Word.
Все форматирование и оформление исходного PDF-файла будут потеряны.
Конвертация PDF в Word с помощью pdf2docx
pdf2docx — это библиотека Python, которая обеспечивает простой и эффективный способ преобразования PDF‑файлов в документы Microsoft Word (.docx). Это бесплатная библиотека с открытым исходным кодом, которая может быть использована для различных целей, таких как преобразование документов, извлечение данных и обработка текста.
Ее можно установить с PyPI с помощью следующей команды pip.
pip install pdf2docx
Пример кода:
from pdf2docx import Converter
def convert_pdf_to_docx(pdf_file, docx_file):
# Создание объекта Converter
cv = Converter(pdf_file)
# Конвертация указанной страницы PDF в docx
cv.convert(docx_file, start=0, end=None)
cv.close()
# Конвертация PDF в файл Docx
convert_pdf_to_docx("C:\\Users\\Administrator\\Desktop\\Input.pdf", "Output.docx")
Плюсы:
Бесплатно.
Конвертируются как текстовые, так и графические элементы.
Форматирование и макет сохраняются.
Минусы:
Конвертирование сложных PDF-документов занимает немного больше времени по сравнению с использованием коммерческих библиотек.
Конвертация PDF в Word с помощью Spire.PDF for Python
Spire.PDF for Python — это многофункциональная библиотека для работы с PDF‑документами на языке Python. Она предоставляет широкий спектр инструментов для создания, модификации и программного манипулирования PDF-файлами.
Чтобы установить ее с PyPI, воспользуйтесь следующей командой pip.
pip install Spire.PDF
Пример кода:
from spire.pdf.common import *
from spire.pdf import *
# Создание объекта PdfDocument
doc = PdfDocument()
# Загрузка PDF-документа
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf")
# Конвертация PDF в Word с потоковой разметкой
# doc.ConvertOptions.SetPdfToDocOptions(True, True)
# Сохранение в файл docx
doc.SaveToFile("Output.docx", FileFormat.DOCX)
# Освобождение ресурсов
doc.Close()
Плюсы:
Преобразуются как текстовые, так и графические элементы.
Форматирование и макет сохраняются (в режиме фиксированного макета страницы).
Скорость конвертирования высокая.
Минусы:
Лицензия самого низкого уровня стоит 999 долларов.
Конвертация PDF в Word с помощью Aspose.Words for Python via .NET
Aspose.Words for Python via .NET — это коммерческая библиотека для манипулирования и конвертирования документов Microsoft Word (.docx, .doc) с помощью Python. Она также поддерживает преобразование других форматов, таких как PDF и HTML, в формат Word.
Кроме того, ее можно установить непосредственно через PyPI.
pip install aspose-words
Пример кода:
import aspose.words as aw
# Загрузка PDF-документа
doc = aw.Document("C:\\Users\\Administrator\\Desktop\\Input.pdf")
# Конвертация в файл Docx
doc.save("Output.docx")
Плюсы:
Преобразуются как текстовые, так и графические элементы.
Форматирование и макет сохраняются.
Скорость преобразования высокая.
Минусы:
Лицензия самого низкого уровня стоит 1199 долларов.
Заключение
Бесплатные библиотеки с открытым исходным кодом предоставляют удобный способ работы с документами PDF и Word с помощью Python без каких-либо проблем с лицензированием или стоимостью. Коммерческие решения, как правило, предлагают более продвинутые функции и более высокую производительность по сравнению с бесплатными библиотеками с открытым исходным кодом. Выбор между этими вариантами зависит от ваших конкретных требований, бюджета и уровня необходимых функций.
Комментарии (6)
Pol1mus
12.07.2024 05:52Стоит еще добавить способы извлечения текста из пдф в которых его нет, со сканов. Тоже несложно делается. (tesseract и gpt*)
IvanSTV
12.07.2024 05:52+1Минусы:
Только текст будет извлечен и помещен в документ Word.
Все форматирование и оформление исходного PDF-файла будут потеряны.
Исключительный пример питонодрочерства. Есть люди, которые готовы пользоваться совершенно кривым функционалом, но только лишь бы на Питоне.
С такой фигней успешно справляется банальный копипаст. И даже более скажу - открывая Word'ом PDF, мы получим худо-бедно оформление (хоть зачастую и поехавшее), с ним работать можно. Например, я могу пройтись по тем или иным объектам в Word, и взять текст оттуда программно, вместо того, чтобы парсить просто текст. Ну, и картинки никто не отменял как ценность в PDF - например, у меня была задача нацеплять картинок из PDFного каталога.
На хабре тут кричат, кричат, "что ты там возишься с VBA, юзай Питон" - но ЗАЧЕМ, если с этой задачей успешней справляется именно VBA, а питоном это делать больно, долго и для конечного пользователя сложней?
Кто-нибудь может мне объяснить, в чем преимущество работать именно питоном с файлами MS Office для задач, с которыми справляется VBA?
nikolay_karelin
12.07.2024 05:52PyPDF2 уже устаревшая, желательно пользоваться pypdf (возможности те же, но чуть другой API)
Jury_78
В описании написано, что это PyMuPDF.