PDF アノテーション
Potato の pdf ディスプレイタイプで PDF をアノテーションする方法。スパンのハイライト、ページ上のバウンディングボックス、ページをまたぐリンク、スキャン文書向けの OCR を扱います。
pdf ディスプレイは PDF.js を使ってブラウザ上に PDF を描画し、アノテーション面をあらかじめ抽出したテキストではなく描画されたページの上に置きます。アノテーターは段組み、表、図版、改ページがそのまま残った実際の文書を見て、その場でラベルを付けます。このディスプレイが必須とするキーは 1 つだけで、PDF のパスまたは URL を保持するフィールドです。それ以外はすべてディスプレイオプションです。
instance_display:
fields:
- key: pdf
type: pdf
label: "Document"
display_options:
view_mode: scroll
max_height: 760
zoom: page-widthview_mode は scroll、paginated、side-by-side を取ります。連続スクロールはすべてのページを 1 つのコンテナに積み上げるため、アノテーションが改ページをまたぐ必要がある場合に効いてきます。ページ送り表示はナビゲーション操作とともに一度に 1 ページを表示し、アノテーターがページごとに作業する長い文書に向いています。
3 つのアノテーションモード
annotation_mode はアノテーターが何を描けるかを決めるもので、見た目ではなくタスクそのものを変えるオプションです。既定値は span です。
| モード | アノテーターの操作 | アンカー先 |
|---|---|---|
span | テキストを選択してラベルを付ける | PDF.js のテキストレイヤー |
bounding_box | ページ上の任意の位置にボックスを描く | ページ座標 |
link | アンカーを付けてから、それらをつなぐ | テキストスパンとページ領域 |
スパンモードは PDF がテキストレイヤーを持っていることを前提とします。ワープロや組版システムから生成された PDF には必ずありますが、スキャンにはありません。バウンディングボックスモードは前提としないので、スキャンしたページでもテキスト抽出をいっさい行わずに領域単位でラベルを付けられます。
pdf ディスプレイは、他のディスプレイが使う .text-content ラッパーではなく PDF.js のテキストレイヤーを介してスパンをアンカーするため、span_target フラグを受け付けません。スパンのアノテーション自体は、PDF 自身のテキストレイヤーを通して動作します。
ページをまたぐリンク
リンクモードは、2 ページ目の主張が 9 ページ目の図版に依拠している場合のように、ページをまたぐ関係を扱うためのものです。アノテーターはまずアンカーを付け、次にそのあいだに型付きのリンクを引きます。Potato はアンカーとリンクを別々のスキーマ名の下に記録します。
instance_display:
fields:
- key: pdf
type: pdf
label: "Document"
display_options:
annotation_mode: link
view_mode: scroll
enable_text_anchors: true
enable_region_anchors: true
anchor_schema: pdf_anchors
link_schema: pdf_links
anchor_labels:
- name: claim
color: "#dc2626"
- name: figure
color: "#2563eb"
link_types:
- name: refers_to
directed: true
color: "#dc2626"
allowed_source_labels: [claim]
allowed_target_labels: [figure]allowed_source_labels と allowed_target_labels は、あるリンク型がどのアンカー同士を結べるかを制限します。これによりガイドラインは、アノテーターが覚えておくべきものではなく、インターフェースが強制するものになります。上のように設定した refers_to リンクは claim からしか始められず、figure でしか終われないので、図版から主張へ引いたリンクは拒否されます。same_as のような対称的な関係には directed: false を設定してください。
アンカーには 2 種類あり、どちらも個別に無効化できます。enable_text_anchors はテキストスパンのハイライトを、enable_region_anchors は領域ボックスの描画を許可します。後者は図版や表に必要なものです。完全な実例が上流の examples/advanced/pdf-link-scroll/ に同梱されています。
スキャン文書と OCR
ocr は既定でオフで、Potato はこのオプションをリンクモードでのみ読み取ります。設定されている場合、単語はサーバー側で抽出され、クライアント側のテキストレイヤーの構築に使われます。そのため埋め込みテキストのないスキャンでもテキストアンカーを持てます。このオプションは false、true、auto を取り、Potato はそれ以外の値を拒否します。
instance_display:
fields:
- key: pdf
type: pdf
display_options:
annotation_mode: link
ocr: auto
ocr_dpi: 200
ocr_lang: eng3 つの設定の違いは、処理がいつ走るかにあります。false は埋め込みテキストレイヤーだけを使い、true は常に OCR を実行し、auto は埋め込みテキストレイヤーが空で返ってきたときにかぎって OCR に切り替えます。OCR は遅く、Tesseract のインストールが必要なので、混在したコーパスでは auto を選んでください。ocr_dpi は OCR が読み取る前に各ページをラスタライズする解像度を制御し、上げればページごとに時間がかかります。ocr_lang は Tesseract の言語コードを取り、既定値は eng です。
ディスプレイオプション
| オプション | 既定値 | 効果 |
|---|---|---|
view_mode | scroll | scroll、paginated、side-by-side |
max_height | 700 | コンテナの高さ(ピクセル) |
max_width | なし | コンテナの幅 |
text_layer | true | テキスト選択を有効にする |
show_page_controls | true | ページナビゲーション操作 |
initial_page | 1 | 最初に表示するページ |
zoom | auto | auto、page-fit、page-width、またはパーセント値 |
annotation_mode | span | span、bounding_box、link |
bbox_min_size | 10 | 受け付ける最小のボックス(ピクセル) |
bbox_colors | なし | ラベルごとのボックス色 |
show_bbox_labels | true | ボックス上にラベルを描く |
thumbnail_sidebar | true | ページ送り表示でのページサムネイル |
enable_text_anchors | true | テキストスパンをリンクアンカーとして使える |
enable_region_anchors | true | 領域ボックスをリンクアンカーとして使える |
anchor_schema | pdf_anchors | アンカーに記録されるスキーマ |
link_schema | pdf_links | リンクに記録されるスキーマ |
ocr | false | false、true、auto |
ocr_dpi | 200 | OCR の描画解像度 |
ocr_lang | eng | Tesseract の言語コード |
Word ファイルと Markdown ファイル
DOCX や Markdown のファイルには代わりに document ディスプレイを使います。こちらは文書の見出しと段落の構造を保ち、span_target も受け付けます。annotation_mode は span または bounding_box を読み取り、show_outline は本文中の見出しから目次を組み立てます。Potato は描画されたマークアップをアノテーターに届く前に許可リストに通すので、実行可能なタグを含むコーパスフィールドは実行されずに取り除かれます。
instance_display:
fields:
- key: report
type: document
label: "Report"
display_options:
show_outline: true
max_height: 600さらに読む
- インスタンス表示 はすべてのディスプレイタイプと、そのうちどれがスパンターゲットを受け付けるかを一覧にしています。
- スパンアノテーション はスパンスキーマが取るラベルオプションを扱います。
- 文書のアノテーション方法 は文書レビュータスクを最初から最後まで通して解説します。
- 実装の詳細はソースドキュメントを参照してください。