本記事は、一部AIが執筆しました。
DHConvalidatorは、デジタル人文学(DH)会議の抄録を一貫したTEI(Text Encoding Initiative)テキストベースに変換するためのツールです。
https://github.com/ADHO/dhconvalidator
このツールの利用において、Microsoft Word形式(DOCX)からTEI XML形式への変換処理中に以下のようなエラーが発生するケースがありました:
この原因と対処方法について共有します。
原因の特定#
調査の結果、問題の原因はWord文書内に埋め込まれた INCLUDEPICTUREフィールドコード であることが判明しました。
具体的には、Googleドキュメントから画像をコピー&ペーストした際に、以下のようなフィールドコードが文書内に残存していました:
これらの外部画像参照リンクがTEI変換プロセスで適切に処理されず、XML検証エラーを引き起こしていました。
解決方法#
この問題を解決するため、DOCXファイル内の問題のあるフィールドコードを自動的に除去するPythonスクリプトを開発しました。
スクリプトの特徴#
- 安全な処理 : 画像コンテンツ自体は保持し、フィールドコード部分のみを削除
- ZIP形式対応 : DOCXファイルの内部構造(ZIP + XML)を適切に処理
- 名前空間対応 : Word文書のXML名前空間を考慮した正確な要素検索
主要な処理ロジック#
- DOCXファイルを一時ディレクトリに展開
word/document.xml内のフィールドコード構造を解析INCLUDEPICTUREを含むフィールドを特定- フィールド制御要素(begin/separate/end)のみを削除し、画像要素は保持
- 修正されたXMLで新しいDOCXファイルを生成
実装のポイント#
フィールドコード判定#
削除対象の選別#
このスクリプトにより、問題のあるフィールドコードが除去され、TEI変換プロセスが正常に完了するようになりました。画像は適切に文書内に埋め込まれた状態で保持されます。
使用方法#
出力ファイル名を指定しない場合、input_fixed.docxとして保存されます。
ただし、ファイルを開く際に以下の警告が表示されました。スクリプト側の修正方法がわからなかったのですが、「はい」ボタンを押すことで無事に開くことができました。

まとめ#
GoogleドキュメントやWebブラウザから画像をコピーする際は、このような外部参照リンクが埋め込まれる可能性があります。
この問題は他のDOCX処理システムでも発生する可能性があるため、類似のエラーに遭遇した際の参考になれば幸いです。
スクリプト#