DOCX リーダーの使用
DOCX Reader の使用
DocumentReader クラスは Office Open XML (.docx) ファイルを読み取り、抽象化されたデータ構造 — Light Document Model (LDM) を生成します。段落、表、図形、画像、書式設定を処理し、コンテンツを操作または変換できるようにします。
DOCX ファイルの読み取り
最も簡単な方法は Document コンストラクタを使用することで、.docx ファイルに対して自動的に DocumentReader を選択します:
import aspose.words_foss as aw
doc = aw.Document("input.docx")
print(f"Sections: {len(doc.sections)}")
for para in doc.all_paragraphs:
print(para.text)DocumentReader アーキテクチャ
DocumentReader は責務を分割するために 2 つのミキシンを使用します:
| Component | Role |
|---|---|
DocumentReader | Main DOCX parser — reads XML parts from the OPC package |
LdmBuilderMixin | Constructs the Light Document Model from parsed data |
ShapeParserMixin | Parses drawing and shape elements embedded in the document |
3 つすべてが内部で連携して動作します — 結果には Document API を介して操作します。
テキストの抽出
ロードされたドキュメントの text プロパティを使用して、ファイルに保存せずにプレーンテキストを抽出します:
import aspose.words_foss as aw
doc = aw.Document("contract.docx")
text = doc.text
print(text[:500])段落と書式設定の操作
LDM を介して段落レベルのプロパティにアクセスします:
import aspose.words_foss as aw
doc = aw.Document("styled.docx")
for para in doc.all_paragraphs:
for run in para.runs:
if run.font.bold:
print(f"Bold: {run.text}")各 Run は、DOCX XML から解析されたフォントプロパティ(太字、斜体、サイズ、色)を保持しています。
シェイプと画像の処理
パース中に ShapeParserMixin が描画要素を抽出します。シェイプは段落コンテンツ内の ShapeNode オブジェクトとして LDM に表示されます:
import aspose.words_foss as aw
doc = aw.Document("with-images.docx")
for para in doc.all_paragraphs:
for node in para.content_sequence:
if hasattr(node, 'shape_type'):
print(f"Shape: {node.shape_type}")ヒントとベストプラクティス
- 標準的なワークフローには
Document("file.docx")を使用してください — 読み取り選択、パッケージの検証、および LDM の構築を自動的に処理します。 - ストリームベースの入力(Web アップロード)の場合は、ファイルライクオブジェクトを
Documentコンストラクタに渡します。 - 表を含むファイルは、
doc.tablesまたはdoc.all_tablesを介してアクセスします。 - バッチ処理では、同じ Python プロセスを再利用して、インポートのオーバーヘッドを繰り返すことを防ぎます。
よくある問題
| Issue | Cause | 修正 |
|---|---|---|
| ファイルが読み込めません(例外) | 破損しているか不完全な ZIP アーカイブ | ファイルが有効な .docx(ZIP ベースの OPC パッケージ)であることを確認してください |
| 出力に画像が欠如しています | 画像パーツがパッケージに埋め込まれていません | DOCX に埋め込み画像(リンク画像ではなく)が含まれているか確認してください |
| 出力にコンテンツが欠如しています | パッケージに必要な XML 部品が欠如しています | ファイルが切り詰められている可能性があります; 元のアプリケーションから再エクスポートしてください |
FAQ
Light Document Model (LDM) とは何ですか?
LDM はすべてのリーダーで共有される内部表現です。形式固有の詳細(OPC XML、OLE2 バイナリ)を抽象化し、セクション、段落、ラン、テーブル、シェイプの共通構造に変換します。
DocumentReader は DOCM(マクロ有効)ファイルを処理できますか?
マクロ有効な .docm ファイルは同じ OPC 構造を使用します。リーダーは文書内容を解析できますが、マクロは保持されず実行もされません。
リーダーは大きな文書をどのように処理しますか?
リーダーは XML パーツを順番に処理します。メモリ使用量は文書サイズに比例します。非常に大きな文書の場合は、セクションを個別に処理することを検討してください。
API Reference の概要
| クラス / メソッド | 説明 |
|---|---|
DocumentReader | DOCX ドキュメントを読み取り、抽象化されたデータ構造を生成します |
LdmBuilderMixin | Light Document Model の構築メソッドを提供するミックスイン |
ShapeParserMixin | 描画/シェイプ解析メソッドを提供するMixin |
Document | Word ドキュメント(LDM ルート)を表します |
create_reader(path) | ファイル拡張子に対して正しいリーダーを返すファクトリ |