二つの Word ファイル間の差分を検出することは、契約書、レポート、法的文書を扱う開発者にとって頻繁なニーズです。
Aspose.BarCode Cloud SDK for Python は、Aspose.Words Cloud SDK for Python と組み合わせて、Python で Word 文書のテキストをプログラム的に比較できる強力なライブラリを提供します。このガイドでは、環境のセットアップ、ドキュメントの Aspose Cloud ストレージへのアップロード、比較オプションの設定、比較の実行、変更履歴が追跡された結果文書の取得方法を説明します。また、cURL を使用した直接的な REST 呼び出しで同じ結果を得る方法も紹介します。
環境の準備 - 前提条件とセットアップ
開始する前に、以下のものが揃っていることを確認してください:
- ローカルに Python 3.8 以上がインストールされていること。
- Aspose Cloud アカウント(client_id と client_secret が必要、Aspose Cloud ダッシュボードで取得可能)。
- 一時ファイル処理のために Aspose Cloud ストレージへのアクセス権があること。
pip を使用して BarCode SDK をインストールします:
pip install aspose-barcode-cloud
Word 固有の操作を処理する Aspose.Words Cloud SDK for Python も必要です:
pip install asposewordscloud
環境変数として資格情報を設定するか、コード内のプレースホルダーを置き換えてください:
import os
client_id = os.getenv("ASPOSE_CLIENT_ID")
client_secret = os.getenv("ASPOSE_CLIENT_SECRET")
SDK はこれらの値を使用して Aspose Cloud サービスに対して認証を行います。環境が整ったら、実装に進むことができます。
PythonでWord文書のテキストを比較する: ステップバイステップのウォークスルー
ステップ 1: ソース ドキュメントを読み込む
まず、SDK が認証できるように Aspose Cloud の認証情報を設定し、Python で Word ドキュメントのテキストを比較できるようにします。
from asposewordscloud import WordsApi, Configuration
config = Configuration(client_id=client_id, client_secret=client_secret)
words_api = WordsApi(config)
ステップ 2: ソースおよびターゲット文書をアップロード
比較したい 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 を設定して、Python で Word ドキュメントのテキストを比較する方法(大文字と小文字を無視する、コメントを無視するなど)を定義します。
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: ドキュメント比較を実行する
実際に Python で Word 文書のテキストを比較し、改訂履歴付きの結果を生成するには、compare_document メソッドを呼び出します。
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"})
PythonでWord文書のテキストを比較する完全実装 - 完全コード例
以下のコードは、Pythonで Aspose API を使用して Word 文書のテキストを比較する完全なワークフローを示しています。
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}"})
注意: このコード例はコア機能を示しています。プロジェクトで使用する前に、ファイル パスや構成値が実際の環境に合わせて更新されていることを確認し、必要な依存関係がすべて正しくインストールされているかを検証し、開発環境で徹底的にテストしてください。問題が発生した場合は、公式ドキュメント または サポートチーム にお問い合わせください。
cURL を使用した REST API によるドキュメント比較の実行
以下は、REST API を介した Python 操作で Word 文書のテキスト比較を同様に実行する cURL コマンドです。
- 認証してアクセストークンを取得
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"
- ソースファイルをアップロード
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"
- 対象ファイルをアップロード
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"
- 比較を実行する
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
- 出力ファイルをダウンロード
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 ドキュメントをご覧ください。
結論
この記事では、Aspose.BarCode Cloud SDK for Python を使用して、Python で Word ドキュメントのテキストを比較する方法を示しました。資格情報の設定、ファイルのアップロード、比較オプションの構成、そして compare API の呼び出しという手順に従うことで、アプリケーション内でドキュメント差分ワークフローを自動化できます。本番環境で使用するためには適切なライセンスを取得することを忘れないでください。暫定ライセンスは一時ライセンスページで入手でき、完全なライセンス情報は製品ページに掲載されています。これらのツールを使用すれば、Python プロジェクトへのドキュメント比較の統合がシンプルかつ信頼性の高いものになります。
よくある質問
-
Aspose.BarCode Cloud SDK for Python は、Python で Word 文書のテキスト比較をどのように支援しますか?
SDK は Aspose.Words Cloud SDK for Python と連携して、DOCX ファイルをアップロードし、比較オプションを設定し、差分をハイライトしたリビジョン追跡結果を生成します。詳細は Aspose.BarCode Cloud SDK for Python 製品ページをご覧ください。 -
大きな Word ファイルを効率的に比較できますか?
はい。compare_documentAPI を使用すると、Aspose Cloud ストレージから大きな DOCX ファイルをストリーミングでき、サービスはサーバー側で処理するため、ローカルマシンのメモリ使用量を最小限に抑えます。パフォーマンスに関するヒントは、公式ドキュメント を参照してください。 -
比較に対応しているファイル形式は何ですか?
APIは主にDOCXファイルで動作しますが、Aspose.Words を使用してDOCに変換された後、DOC ファイルも比較できます。すべての形式名は大文字で表記されます(例:DOCX、PDF)。 -
本番環境で実行するにはライセンスが必要ですか?
一時ライセンスは一時ライセンスページで入手できます。 本番環境で使用する場合は、製品ページに記載されているようにフルライセンスを購入する必要があります。