1仕組みと動作原理
ドキュメントの階層別ルーティング:SKILL.mdには頻出レシピと「次のステップ」へのポインタのみを記載し、高度なライブラリ/JSの使用法はREFERENCE.md、フォーム入力の完全なワークフローはFORMS.mdに配置し、3つのドキュメントを用途に応じて役割分担しています。
For advanced features, JavaScript libraries, and detailed examples, see REFERENCE.md. If you need to fill out a PDF form, read FORMS.md and follow its instructions.
標準的なPDF操作はPythonライブラリ+CLIのデュアルトラック方式を採用し、すべてローカルで実行:pypdf(構造操作)、pdfplumber(テキスト/表)、reportlab(新規作成)、pdftotext/qpdf/pdftk/pdfimages(CLIショートカット)。
This guide covers essential PDF processing operations using Python libraries and command-line tools.
フォーム入力は重要な機能であり、2つの形態を区別:入力可能フォーム(fillable、フィールドに直接書き込み)と入力不可フォーム(フィールドなし → FreeTextテキスト注釈を重畳)。後者は「構造抽出による座標取得」を優先し、失敗した場合のみ目視による見積もりにフォールバックします。
If the PDF doesn't have fillable form fields, you'll add text annotations. First try to extract coordinates from the PDF structure (more accurate), then fall back to visual estimation if needed.
入力前の必須チェックゲート:check_bounding_boxes.pyで交差するバウンディングボックスや極小の入力枠を検証;入力後は画像化による目視確認を強制し、座標変換エラーを成果物納品前に検出します。
**Always validate bounding boxes before filling:**
自己完結した座標系の変換:forms.mdでPDF座標系(ページ上部y=0から下方向に増加)を規定し、fields.jsonにpdf_width/pdf_heightまたは画像サイズ情報を保持。入力スクリプトが座標系を自動検出して変換します。
The fill script auto-detects the coordinate system and handles conversion:
スキャンデータのOCRと「検索可能化」はテキスト抽出レイヤーのみをカバー:サンプルではpdf2image → pytesseractを経由して各ページのOCRテキストを連結して出力しますが、透明テキスト層を含むPDFを直接生成するスクリプトは提供されていません。
Requires: pip install pytesseract pdf2image
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| package | pypdf(读写/合并/旋转/加密/字段) |
| package | pdfplumber(文本/表格坐标级抽取) |
| package | reportlab(创建 PDF) |
| cli | pdftotext(poppler-utils) |
| cli | qpdf(合并/拆分/旋转/修复/加密) |
| cli | pdftk(若可用)与 pdfimages(poppler,抽图) |
| package | pytesseract + pdf2image(OCR,按需安装) |
| package | pypdfium2 / pdf-lib(JS) / pdfjs-dist(JS)(高级参考章节) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: 8つの内蔵Pythonスクリプト(pypdf/pdfplumber/PIL/pdf2image)
- 本地工作目录: ファイル読み書きおよび成果物出力: PDF、fields.json、form_structure.json、画像を出力(ローカルワークスペース内)
5二重目の独立検証
- [ok] 填表工作流引用脚本全部存在 — forms.md 各步骤命令行(extract_form_structure/check_bounding_boxes/fill_pdf_form_with_annotations/convert_pdf_to_images/check_fillable_fields)与 scripts/ 文件一一对应。
- [discrepancy] OCR『make them searchable』宣称 vs 实现 — description 声称 OCR 使扫描件可搜索,但 SKILL.md 'Extract Text from Scanned PDFs' 示例只把 pytesseract 文本拼进字符串打印/汇总;生成带文本层的可搜索 PDF 没有脚本或配方,需宿主自行组合。属轻微措辞超前(抽取是搜索化的前置),已在 risks 标注。
- [ok] 库依赖与 import 一致 — 脚本实际 import pypdf/pdfplumber/PIL/pdf2image,与依赖清单一致;无隐藏第三方。
- [ok] 网络/凭证零命中 — token 扫描(url/requests/urllib/env/token/secret/key)零命中;无配置文件读取。
- [ok] 坐标转换逻辑存在 — fill_pdf_form_with_annotations.py 有 transform_from_image_coords 函数,forms.md 双坐标系说明与之配套。
- [ok] 元数据与资产核对 — 本地 HEAD==pin;LICENSE.txt 专有条款与 frontmatter 'Proprietary' 一致;REFERENCE.md/forms.md 行数与结构如述。
6結論
8a9ce019ed1b048d…