Extract Text from MS Word Documents in C#

Документи Microsoft Word є основою для створення та обміну текстовим контентом. Якщо ви розробляєте програми на C#, які взаємодіють з цими документами, ви можете виявити, що вам потрібно витягти текст з них. Це може бути необхідно для таких цілей, як аналіз тексту або витягування конкретних розділів документа для складання нового. У цьому блозі ми розглянемо методи витягування тексту з документів Word у C#.

Зміст

Бібліотека C# для витягування тексту

Aspose.Words for .NET — це потужна та зручна бібліотека, призначена для роботи з документами Word. Вона надає всебічний набір функцій, включаючи витягування тексту, створення, маніпуляцію та конвертацію документів. З Aspose.Words for .NET розробники можуть ефективно управляти різними аспектами документів Word, що робить її незамінним інструментом для ваших розробницьких потреб.

Щоб розпочати, завантажте бібліотеку або встановіть її безпосередньо з NuGet за допомогою наступної команди в консолі менеджера пакетів:

PM> Install-Package Aspose.Words

Розуміння витягування тексту в документах Word

Документ MS Word складається з різних елементів, таких як абзаци, таблиці та зображення. Відповідно, вимоги до витягування тексту можуть відрізнятися в залежності від конкретного випадку використання. Вам може знадобитися витягти текст між абзацами, закладками, коментарями тощо.

Кожен елемент у документі Word представляється як вузол. Тому, щоб ефективно обробити документ, вам потрібно буде працювати з цими вузлами. Давайте розглянемо, як витягнути текст з документів Word у різних сценаріях.

Покрокове керівництво з витягування тексту з документа Word

У цьому розділі ми реалізуємо C# текстовий екстрактор для документів Word. Процес витягування тексту буде включати наступні етапи:

  1. Визначте вузли, які потрібно включити в процес витягування.
  2. Витягніть вміст між вказаними вузлами (включаючи або виключаючи початкові та кінцеві вузли).
  3. Використовуйте клоновані витягнуті вузли для створення нового документа Word, що містить витягнутий вміст.

Давайте створимо метод під назвою ExtractContent, який прийматиме вузли та інші параметри для виконання витягування тексту. Цей метод буде аналізувати документ і клонувати вузли на основі наступних параметрів:

  • StartNode та EndNode: Ці параметри визначають початкові та кінцеві точки для витягування вмісту. Вони можуть бути блоковими (наприклад, Paragraph, Table) або вбудованими вузлами (наприклад, Run, FieldStart, BookmarkStart).
    • Для полів передайте відповідний об’єкт FieldStart.
    • Для закладок використовуйте вузли BookmarkStart та BookmarkEnd.
    • Для коментарів застосовуйте вузли CommentRangeStart та CommentRangeEnd.
  • IsInclusive: Цей параметр визначає, чи включені маркери у витягування. Якщо встановлено значення false і передано однакові або сусідні вузли, буде повернуто порожній список.

Ось повна реалізація методу ExtractContent для витягування вмісту між вказаними вузлами:

Крім того, деякі допоміжні методи потрібні методу ExtractContent для полегшення операції витягування тексту:

Тепер, коли наші методи готові, ми можемо перейти до витягування тексту з документа Word.

Витягування тексту між абзацами документа Word

Щоб витягти вміст між двома абзацами в документі Word DOCX, дотримуйтесь цих кроків:

  1. Завантажте документ Word за допомогою класу Document.
  2. Отримайте посилання на початковий та кінцевий абзаци, використовуючи метод Document.FirstSection.Body.GetChild(NodeType.PARAGRAPH, int, boolean).
  3. Викличте метод ExtractContent(startPara, endPara, True) для витягування вузлів у об’єкт.
  4. Використовуйте допоміжний метод GenerateDocument(Document, extractedNodes) для створення документа з витягнутим вмістом.
  5. Збережіть новий документ за допомогою методу Document.Save(string).

Ось приклад коду, що демонструє, як витягти текст між 7-м та 11-м абзацами в документі Word:

Витягування тексту між різними типами вузлів

Ви також можете витягти вміст між різними типами вузлів. Наприклад, давайте витягнемо вміст між абзацом і таблицею та збережемо його у новому документі Word. Кроки такі:

  1. Завантажте документ Word за допомогою класу Document.
  2. Отримайте посилання на початкові та кінцеві вузли, використовуючи метод Document.FirstSection.Body.GetChild(NodeType, int, boolean).
  3. Викличте ExtractContent(startPara, endPara, True) для витягування вузлів у об’єкт.
  4. Використовуйте допоміжний метод GenerateDocument(Document, extractedNodes) для створення документа з витягнутим вмістом.
  5. Збережіть новий документ за допомогою Document.Save(string).

Ось приклад коду для витягування тексту між абзацом і таблицею в C#:

Витягування тексту на основі стилів

Щоб витягти вміст між абзацами на основі стилів, дотримуйтесь цих кроків. Для цієї демонстрації ми витягнемо вміст між першим “Заголовком 1” та першим “Заголовком 3” у документі Word:

  1. Завантажте документ Word за допомогою класу Document.
  2. Витягніть абзаци в об’єкт, використовуючи допоміжний метод ParagraphsByStyleName(Document, “Heading 1”).
  3. Витягніть абзаци в інший об’єкт, використовуючи ParagraphsByStyleName(Document, “Heading 3”).
  4. Викличте ExtractContent(startPara, endPara, True) з першими елементами з обох масивів абзаців.
  5. Використовуйте допоміжний метод GenerateDocument(Document, extractedNodes) для створення документа з витягнутим вмістом.
  6. Збережіть новий документ за допомогою Document.Save(string).

Ось приклад коду для витягування вмісту між абзацами на основі стилів:

Дізнайтеся більше про витягування тексту

Досліджуйте додаткові сценарії витягування тексту з документів Word через цю статтю документації.

Отримайте безкоштовну бібліотеку для витягування тексту з Word

Ви можете отримати безкоштовну тимчасову ліцензію для витягування тексту без обмежень оцінювання.

Висновок

Aspose.Words for .NET — це універсальна бібліотека, яка спрощує процес витягування тексту з документів Word у C#. Завдяки своїм широким можливостям та зручному API ви можете ефективно працювати з документами Word і автоматизувати різні сценарії витягування тексту. Незалежно від того, чи розробляєте ви програми, які вимагають обробки документів Word, чи просто витягуєте текст, Aspose.Words for .NET є важливим інструментом для розробників.

Щоб дізнатися більше про можливості Aspose.Words for .NET, перегляньте документацію. Якщо у вас є запитання, не соромтеся звертатися до нас через наш форум.

Дивіться також

Порада: Вам може бути цікаво ознайомитися з конвертером Aspose PowerPoint в Word, який демонструє популярний процес конвертації презентацій у документи Word.