Обнаружение различий между двумя файлами Word часто требуется разработчикам, работающим с контрактами, отчетами или юридическими документами. Aspose.BarCode Cloud SDK for Python предоставляет мощную библиотеку, которую можно сочетать с Aspose.Words Cloud SDK for Python для программного сравнения текста в документах Word на Python. В этом руководстве вы настроите свою среду, загрузите документы в хранилище Aspose Cloud, сконфигурируете параметры сравнения, выполните сравнение и получите результирующий документ с отслеживаемыми изменениями. Вы также увидите, как достичь того же результата с помощью прямых REST‑вызовов через cURL.

Подготовка окружения - Требования и настройка

Прежде чем начать, убедитесь, что у вас есть следующее:

  • Python 3.8 или новее, установленный локально.
  • Учётная запись Aspose Cloud с client_id и client_secret (доступные в панели управления Aspose Cloud).
  • Доступ к хранилищу Aspose Cloud для временной обработки файлов.

Установите BarCode SDK через pip:

pip install aspose-barcode-cloud

Вам также понадобится Aspose.Words Cloud SDK for Python, который обрабатывает операции, специфичные для Word:

pip install asposewordscloud

Установите свои учетные данные как переменные среды или замените заполнители в коде:

import os
client_id = os.getenv("ASPOSE_CLIENT_ID")
client_secret = os.getenv("ASPOSE_CLIENT_SECRET")

SDK будут использовать эти значения для аутентификации в сервисах Aspose Cloud. Как только среда будет готова, мы можем перейти к реализации.

Сравнение текста в документах Word на Python: пошаговое руководство

Шаг 1: Загрузить исходный документ

Сначала настройте свои учетные данные Aspose Cloud, чтобы SDK мог аутентифицироваться, и вы могли сравнивать текст в документах Word на Python.

from asposewordscloud import WordsApi, Configuration

config = Configuration(client_id=client_id, client_secret=client_secret)
words_api = WordsApi(config)

Шаг 2: Загрузка исходного и целевого документов

Загрузите два файла DOCX, которые вы хотите сравнить. Вспомогательная функция абстрагирует процесс загрузки.

def upload(local_file, remote_name):
    with open(local_file, "rb") as f:
        words_api.upload_file(request={"path": f"TempCompare/{remote_name}", "file": f})

upload("doc1.docx", "doc1.docx")
upload("doc2.docx", "doc2.docx")

Шаг 3: Установить параметры сравнения

Затем установите CompareOptions, чтобы определить, как SDK должен сравнивать текст в документах Word на Python, например, игнорируя регистр или комментарии.

from asposewordscloud.models import CompareOptions

compare_opts = CompareOptions(
    author="PythonComparer",
    compare_options="IgnoreCase,IgnoreComments,IgnoreFormatting",
    file_path="TempCompare/doc2.docx",
    revision_author="PythonComparer",
    revision_date_time="2023-01-01T00:00:00Z"
)

Шаг 4: Выполнить сравнение документов

Теперь вызовите метод compare_document, чтобы фактически сравнить текст в документах Word в Python и создать результат с отслеживанием изменений.

compare_result = words_api.compare_document(
    request={
        "name": "doc1.docx",
        "compare_data": compare_opts,
        "folder": "TempCompare"
    }
)

Шаг 5: Получить и сохранить результат

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

with open("compare_result.docx", "wb") as out_file:
    out_file.write(compare_result.document)

words_api.delete_file(request={"path": "TempCompare/doc1.docx"})
words_api.delete_file(request={"path": "TempCompare/doc2.docx"})

Сравнение текста в документах Word на Python: полная реализация — полный пример кода

Следующий код демонстрирует полный рабочий процесс сравнения текста в документах Word на Python с использованием Aspose APIs.

import os
from asposewordscloud import WordsApi, Configuration
from asposewordscloud.models import CompareOptions

# ----------------------------------------------------------------------
# Configuration – set your Aspose Cloud credentials in environment variables
# ----------------------------------------------------------------------
client_id = os.getenv("ASPOSE_CLIENT_ID")
client_secret = os.getenv("ASPOSE_CLIENT_SECRET")
config = Configuration(client_id=client_id, client_secret=client_secret)

# ----------------------------------------------------------------------
# Initialize the Words API client
# ----------------------------------------------------------------------
words_api = WordsApi(config)

# ----------------------------------------------------------------------
# Local file paths (replace with your actual files)
# ----------------------------------------------------------------------
source_path = "doc1.docx"
target_path = "doc2.docx"
result_path = "compare_result.docx"

# ----------------------------------------------------------------------
# Remote folder in Aspose Cloud storage where temporary files are kept
# ----------------------------------------------------------------------
remote_folder = "TempCompare"

# ----------------------------------------------------------------------
# Helper to upload a local file to Aspose Cloud storage
# ----------------------------------------------------------------------
def upload(local_file, remote_name):
    with open(local_file, "rb") as f:
        words_api.upload_file(request={"path": f"{remote_folder}/{remote_name}", "file": f})

# ----------------------------------------------------------------------
# Upload source and target documents
# ----------------------------------------------------------------------
upload(source_path, source_path)
upload(target_path, target_path)

# ----------------------------------------------------------------------
# Set up comparison options
# ----------------------------------------------------------------------
compare_opts = CompareOptions(
    author="PythonComparer",
    compare_options="IgnoreCase,IgnoreComments,IgnoreFormatting",
    file_path=f"{remote_folder}/{target_path}",
    revision_author="PythonComparer",
    revision_date_time="2023-01-01T00:00:00Z"
)

# ----------------------------------------------------------------------
# Perform the comparison
# ----------------------------------------------------------------------
try:
    compare_result = words_api.compare_document(
        request={
            "name": source_path,
            "compare_data": compare_opts,
            "folder": remote_folder
        }
    )
    # The API returns the resulting document as a byte array
    with open(result_path, "wb") as out_file:
        out_file.write(compare_result.document)
finally:
    # ------------------------------------------------------------------
    # Clean up remote temporary files
    # ------------------------------------------------------------------
    words_api.delete_file(request={"path": f"{remote_folder}/{source_path}"})
    words_api.delete_file(request={"path": f"{remote_folder}/{target_path}"})

Примечание: Этот пример кода демонстрирует базовый функционал. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации, чтобы они соответствовали вашей реальной среде, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если возникнут проблемы, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.

Выполнение сравнения документов через REST API с использованием cURL

Ниже приведены команды cURL, которые выполняют то же сравнение текста в документах Word в операции Python через REST API.

  1. Аутентификация и получение токена доступа
curl -X POST "https://api.aspose.cloud/connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
  1. Загрузить исходный файл
curl -X PUT "https://api.aspose.cloud/v4.0/words/TempCompare/doc1.docx" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@doc1.docx"
  1. Загрузите целевой файл
curl -X PUT "https://api.aspose.cloud/v4.0/words/TempCompare/doc2.docx" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@doc2.docx"
  1. Выполнить сравнение
curl -X POST "https://api.aspose.cloud/v4.0/words/doc1.docx/compare" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "compareOptions": {
            "author": "PythonComparer",
            "compareOptions": "IgnoreCase,IgnoreComments,IgnoreFormatting",
            "filePath": "TempCompare/doc2.docx",
            "revisionAuthor": "PythonComparer",
            "revisionDateTime": "2023-01-01T00:00:00Z"
        }
      }' -o compare_result.docx
  1. Скачать выходной файл
curl -X GET "https://api.aspose.cloud/v4.0/words/TempCompare/compare_result.docx" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -o compare_result.docx

Для получения более подробной информации о телах запросов и дополнительных параметрах см. официальную документацию API.

Заключение

В этой статье показано, как сравнивать текст в документах Word на Python с использованием Aspose.BarCode Cloud SDK for Python. Следуя шагам по настройке учетных данных, загрузке файлов, конфигурации параметров сравнения и вызову API сравнения, вы можете автоматизировать процессы дифференциации документов в своих приложениях. Не забудьте получить соответствующую лицензию для использования в продакшн; временная лицензия доступна на странице временной лицензии, а полные сведения о лицензировании указаны на странице продукта. С этими инструментами интеграция сравнения документов в ваши проекты на Python становится простой и надежной.

Часто задаваемые вопросы

  • Как Aspose.BarCode Cloud SDK for Python помогает сравнивать текст в документах Word на Python?
    SDK работает совместно с Aspose.Words Cloud SDK for Python для загрузки файлов DOCX, установки параметров сравнения и создания результата с отслеживанием изменений, который выделяет различия. См. страницу продукта Aspose.BarCode Cloud SDK for Python для подробностей.

  • Могу ли я эффективно сравнивать большие файлы Word?
    Да. Используя API compare_document, вы можете потоково передавать большие файлы DOCX из хранилища Aspose Cloud, а сервис обрабатывает их на стороне сервера, минимизируя использование памяти на вашем компьютере. См. официальную документацию для получения советов по производительности.

  • Какие форматы файлов поддерживаются для сравнения?
    API в основном работает с файлами DOCX, но вы также можете сравнивать файлы DOC после их конвертации в DOCX с помощью Aspose.Words. Все названия форматов пишутся заглавными буквами, например, DOCX, PDF.

  • Нужна ли лицензия для запуска в продакшн?
    Временная лицензия доступна на странице страница временной лицензии. Для использования в продакшн следует приобрести полную лицензию, как описано на странице продукта.

Читать далее