AI・機械学習
エージェントによるドキュメント編集に有望な Paper Office
Looks promising for document editing with your agent (paperinstruments.com)
要約
Paper Officeは、Word、PowerPoint、Excelファイルをエージェントが安全かつ正確に操作できるようにするPythonパッケージ群です。既存のライブラリを改良し、エージェントが人間のワークフローに近い方法でドキュメントを編集できるようにすることで、エージェントの普及を妨げていたボトルネックを解消することを目指しています。
全文翻訳
← ResearchIntroducing Paper OfficeSep 23, 2026 · Daanish Khazi, Gavin Bains, Joey Besgenpaper-docxpaper-pptxpaper-xlsx 本日、Paper Officeをリリースします。これは、既存のオープンソースパッケージであるpython-docx、python-pptx、OpenPyxlを基盤とし、エージェントがWord、PowerPoint、Excelファイルを、安全性、正確性、および網羅性を高めて操作できるようにするPythonパッケージ群です。5つのモデルと61のタスクにわたるテストで、Paperパッケージとガイダンスを組み合わせたものは、スキルを持たないアップストリームパッケージ(80.7%)やAnthropicの類似Officeスキルを持つもの(69.5%)と比較して、92.5%のトライアルを通過しました。また、エージェントは、スキルを持たない場合(78.7%)やAnthropicのスキルを持つ場合(50.5%)と比較して、Paperの実行のわずか1.6%でOfficeファイル内部を直接編集するコードを作成しました。プロンプト、スキル、ツールに加えて、基本的なソフトウェアが、ハーネス最適化のための重要なレバーであり続けることを指摘します。
Brownfield Knowledge Workコンサルタント、弁護士、銀行家、オペレーターの日常業務におけるエージェントの浸透率は依然として低いままです。専門家による導入のボトルネックは、実際のワークフローへの忠実性にあると信じています。エージェントは人間と同じ手法で既存のドキュメントを操作しておらず、結果として生成されるデッキ、シート、ドキュメントは、クライアントの消費に適さない奇妙な中間状態にあります。DOCX、PPTX、XLSXファイルはOffice Open XML(OOXML)を使用しています。それぞれがXMLファイル、画像、その他のリソースをリンクしたZIPアーカイブであり、単一のテキストファイルではありません。それらを編集するということは、それらの部分とその関係性を一貫して保つことを意味するため、わずかな視覚的な変更でも複数の場所での更新が必要になる場合があります。標準的なPython Officeライブラリ(python-docx、python-pptx、openpyxl)は、長年のエッジケースが蓄積された成熟した構築ツールであり、ほとんどの本番環境のエージェントはドキュメント操作にこれらのライブラリを依存しています。しかし、これらのライブラリは数年間更新されておらず、多くの重要なワークフローにおいて、機能の網羅性や正確性の保証が不足しています。場合によっては、モデルは、より簡単に古典的なOfficeドキュメントを表現および操作するために、他のJavaScriptベースのパッケージやHTMLからドキュメントへのプロセスを選択しますが、これらの仲介表現は情報が失われやすく、既存のブラウンフィールド作業をしばしば破損させます。
私たちは、標準的なPython OfficeライブラリのAPIをフォーク、パッチ、および再構築して、さまざまなエージェントファーストユースケースをサポートし、正確性を向上させ、機能の網羅性を拡張しました。ファイル編集を行うエージェントは、しばしば以下を行う必要があります。
- テキストが要素に分割されている場合やテンプレートから継承されている場合でも、ユーザーが参照する論理オブジェクトを見つける
- フォーマットと関係性を維持しながら、要求された変更を適用する
- ライブラリが理解しないパッケージ部分を含む、要求されたスコープ外のすべてを保存する
- 保存された成果物を再オープンし、意図した効果がシリアライゼーションを生き残ったことを確認する
パッケージがこれらの操作を表現できない場合、モデルはラッパースクリプトや生のOOXMLにフォールバックし、パッケージのメカニズムでコンテキストを汚染します。これは、コメントアンカー、チャートワークブック、フィールド、カスタムXML、数式依存関係などのサイレントなリグレッションに頻繁につながります。
Paper Office PackagesPaper Officeは、インポートをそのままに、その下のパッケージを拡張します。既存のモデルの事前知識は依然として有用です:import docx、from pptx import Presentation、およびimport openpyxlは引き続き機能します。追加機能は、型付けされた機械可読データとして隠された構造を公開し、サポートされる編集の前にターゲットを検証し、パッケージを維持する保存パスを提供し、制限された変更を報告し、操作が安全に処理できない場合に明示的に拒否します。
Paper DOCX Overviewpaper-docxは、ドキュメント全体の検索、変更履歴の追跡、コメント、合成、および元に戻せる赤字機能をpython-docxに拡張し、エージェントがWordのネイティブレビューモデルを使用して既存のWordドキュメントを改訂およびレビューできるようにします。機能を探る追加機能は、作業に関連付けられています。
- クロスランテキスト検索。docx.searchは、正規化されたマッチングをオプトインして、Wordのランフラグメンテーション全体で正確なテキストをマッチさせ、置換、変更履歴の追跡、またはコメントアンカーのためのライブSpanを返します。Spanは変更前に再検証され、テキストを変更する置換の後にSpanを再取得します。
- 番号付けの再開。docx.numbering.restart_numbering()は、既存の定義を保持し、1から再開する新しい番号付けインスタンスを作成します。apply_numbering()はそれを意図した段落に適用します。
- ネイティブWord赤字。docx.package.compareは、テキストとテーブル行の変更をWordネイティブの変更履歴として発行し、プライベートコピーで受け入れおよび拒否の結果の両方を検証し、安全に表現できない違いを拒否します。
- レビュー解決とコメントスレッド。doc.revisionsは、サポートされているリビジョンを列挙し、それらをアトミックに受け入れまたは拒否します。remaining_unsupported()は、別のツールを必要とするフォームを特定します。docx.commentopsは、返信、アンカー、および解決状態を接続されたスレッドとして管理します。
- コンテンツコントロール。docx.controlsは、型付けされた値でサポートされているコントロールを埋め込みます。サポートされているデータバインドテキスト更新は、可視テキストをカスタムXMLストアと同期します。サポートされていないバインドタイプ、ロックされたコントロール、および安全でない構造は拒否されます。
- フィールドとブックマーク。docx.bookmarksとdocx.fieldsは、Span上にブックマークを作成し、ページ番号、日付、相互参照、および目次をプレースホルダー結果としてフィールドとして作成します。
- クロスドキュメント合成。docx.compositionは、フォーマットされたコンテンツをドキュメント間でコピーし、スタイル、番号付け、メディア、ハイパーリンク、ブックマークを調整し、触れたすべての部分を報告します。
- パッケージ差分と保存。docx.package.patch_saveは、意味的に変更されていないパッケージ部分の元のバイトを復元します。diff_packageとtext_diffは変更を報告し、diagnoseは読み取れないパッケージを診断します。Normal Document.save()は出力を検証しますが、バイト最小のシリアライゼーションを保証しません。
- ドキュメント保護。docx.protectionは、アクティブな制限モードに対してPaperの変更をチェックします。コメントのみの保護はコメント操作を許可し、フォーム保護はサポートされているフォーム更新を許可します。明示的な確認は、保護設定を削除せずにガードをオーバーライドします。
フォークは、リビジョンビューと読み取れないブラインド領域のカウントとともに、docx.storyを介して本文、ヘッダー、フッター、脚注、末尾注記、コメント、追跡された挿入、コンテンツコントロール、テキストボックスをトラバースします。
Paper PPTX Overviewpaper-pptxは、継承されたフォーマット検査、ネイティブ箇条書き、保護されたスライドおよびシェイプ編集、クロスデッキ合成、構造差分をpython-pptxに拡張し、PowerPointファイルの外科的な差分検出を可能にします。機能を探る追加機能は、作業に関連付けられています。
- 効果的なフォーマット検査。pptx.inspect、inspect_text、およびinspect_deckは、プロビデンスとコンテンツフィンガープリントされたBlockAnchorターゲットとともに、プレースホルダー、レイアウト、マスター、およびテーマチェーンを通じてサポートされているフォント、段落、およびシェイプのフォーマットを解決します。サポートされていない値は未解決としてマークされ、読み取れない領域がカウントされます。
- フォーマットを維持するテキスト置換。pptx.edit.replace_text、replace_text_at、およびrefindは、影響を受けないランを維持しながらテキストを置換し、アンカーされた編集は古いコンテンツを検出し、間違ったテキストに変更が着地する前に拒否します。
- 関係性安全なスライドクローニング。prs.slides.clone()、delete()、reorder()、およびmove()は関係性安全であり、クローンされたチャートは独立した埋め込みワークブックを受け取り、サポートされていない関係は型付けされた拒否を発生させます。
- パッケージ安全なシェイプ編集。SlideShapes.delete()、move()、およびadd_copy()は、所有権を維持しながらシェイプを編集し、グループを認識する名前によるルックアップは曖昧な名前を拒否し、呼び出し元に曖昧化を求めます。
- マージされたセルテーブル編集。Table.insert_row()、delete_row()、insert_column()、およびdelete_column()は、グリッドを一貫して保ち、影響を受けるセルでマージされた領域を保護します。
- 箇条書き、番号付け、および注記。Paragraph.bulletとTextFrame.normalize_autofit()は、実際の箇条書きを作成し、継承された自動フィットを明示的にします。Slide.read_notes_text()は注記部分を作成せずに読み取り、replace_notes_text()は既存の注記本文を編集します。
- 安全な画像とチャートの更新。Picture.replace_image()は、ターゲット画像をその位置を維持しながら変更します。