Программное извлечение данных, таких как текст и изображения, из документов Word может значительно облегчить автоматизацию задач по обработке документов, упростить анализ и интеграцию этих данных в другие системы.
В этом посте я расскажу вам о том, как извлечь текст, таблицы и изображения из документа Word с помощью библиотеки Python, предназначенной для работы с файлами Word.
-
Извлечение текста из документа Word
-
Извлечение таблиц из документа Word
-
Извлечение изображений из документа Word
Библиотека Python для чтения документов Word
Spire.Doc for Python — это библиотека, которая упрощает работу с документами Microsoft Office Word. Она позволяет программно читать, записывать и манипулировать документами Word, облегчая автоматизацию задач, связанных с документами.
Вы можете установить библиотеку из PyPI с помощью следующей команды.
pip install Spire.Doc
Извлечение текста из документа Word
В Spire.Doc вы можете загрузить файл Word с помощью метода Document.LoadFromFile(), указав в качестве параметра путь к файлу. После этого вы можете получить текст документа с помощью метода Document.GetText().
from spire.doc import * from spire.doc.common import * # Создайте объект документа doc = Document() # Загрузите файл Word doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx") # Получите текст из всего документа text = doc.GetText() # Сохраните текст в текстовый файл with open("C:\\Users\\Administrator\\Desktop\\ExtractedText.txt", "w", encoding="utf-8") as text_file: text_file.write(text)
Выход:
Извлечение таблиц из документа Word
С помощью Spire.Doc доступ к таблицам в разделе документа Word очень прост. Вы можете использовать свойство Section.Tables, чтобы получить коллекцию всех таблиц, присутствующих в этом разделе. Получив эту коллекцию, вы можете найти конкретную таблицу по ее индексу или другим идентифицирующим свойствам.
Получив конкретную таблицу, вы можете взаимодействовать с ее ячейками, обратившись к свойству Rows, которое предоставляет коллекцию всех строк в таблице. Каждая строка содержит несколько ячеек, доступ к которым можно получить через свойство Cells.
Чтобы извлечь текстовое содержимое из каждой ячейки, вы используете объект TableCell. Вызвав TableCell.Paragraphs.get_Item().Text, вы можете получить текст каждого абзаца в ячейке.
from spire.doc import * from spire.doc.common import * # Создайте объект документа doc = Document() # Загрузите документ Word doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.docx") # Переберите секции for i in range(doc.Sections.Count): # Получите конкретную секцию section = doc.Sections.get_Item(i) # Получите таблицы из секции tables = section.Tables # Переберите таблицы for j in range(0, tables.Count): # Получите определённую таблицу table = tables.get_Item(j) # Объявите переменную для хранения данных таблицы tableData = "" # Переберите строки таблицы for m in range(0, table.Rows.Count): # Переберите ячейки строки for n in range(0, table.Rows.get_Item(m).Cells.Count): # Получите ячейку cell = table.Rows.get_Item(m).Cells.get_Item(n) # Получите текст в ячейке cellText = "" for para in range(cell.Paragraphs.Count): paragraphText = cell.Paragraphs.get_Item(para).Text cellText += (paragraphText + " ") # Добавьте текст к строке tableData += cellText # Добавьте новую строку tableData += "\n" # Сохраните данные таблицы в текстовый файл with open(f"output/WordTable_{i+1}_{j+1}.txt", "w", encoding="utf-8") as f: f.write(tableData)
Выход:
Извлечение изображений из документа Word
Чтобы извлечь изображение из документа Word, сначала нужно пройтись по дочерним объектам, содержащимся в документе. Каждый дочерний объект представляет различные элементы документа, такие как текст или изображения.
Во время этой итерации необходимо проверить, не относится ли какой-либо из дочерних объектов к типу DocPicture, который специально представляет изображения в документе. Если дочерний объект действительно является DocPicture, вы можете получить доступ к данным изображения, используя свойство ImageBytes объекта DocPicture. Это свойство предоставляет необработанные байтовые данные изображения, которые затем можно сохранить в файл.
Вы можете указать желаемый формат файла (например, PNG, JPEG) и путь, по которому вы хотите сохранить изображение, что позволит вам успешно извлекать и сохранять изображения для дальнейшего использования.
import queue from spire.doc import * from spire.doc.common import * # Создайте объект документа doc = Document() # Загрузите файл Word doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.docx") # Создайте объект очереди nodes = queue.Queue() nodes.put(doc) # Создайте список images = [] while nodes.qsize() > 0: node = nodes.get() # Переберите дочерние объекты в документе for i in range(node.ChildObjects.Count): child = node.ChildObjects.get_Item(i) # Определите, является ли дочерний объект изображением if child.DocumentObjectType == DocumentObjectType.Picture: picture = child if isinstance(child, DocPicture) else None dataBytes = picture.ImageBytes # Добавьте данные изображения в список images.append(dataBytes) elif isinstance(child, ICompositeObject): nodes.put(child if isinstance(child, ICompositeObject) else None) # Переберите изображения в списке for i, item in enumerate(images): fileName = "Image-{}.png".format(i) with open("ExtractedImages/"+fileName, 'wb') as imageFile: # Запишите изображение в указанное место imageFile.write(item)
Выход:
Заключение
В этой статье мы рассмотрели, как извлекать текст, таблицы и изображения из документа Word с помощью Spire.Doc for Python — библиотеки для создания, чтения и редактирования документов MS Word в приложении на Python. Надеемся, что эта статья будет для вас информативной и полезной.
ссылка на оригинал статьи https://habr.com/ru/articles/872638/
Добавить комментарий