LaTeX作業におけるPDFレビュー注釈のテキスト抽出
from LaTeX
LaTeXで書かれた文章のレビューはPDFビューアーがやりやすい一方で,その反映はエディタで閲覧できる形式だとやりやすい.
そこで,PDFに付けられたハイライトやメモを機械的に抽出し,どの文章にどのようなコメントがあるかをテキストエディタで確認できるような仕組みを実装した.
これまでのワークフロー
1. PDFにハイライト・メモを付けるながらレビューする
2. PDFの各注釈を見ながら原稿を修正
問題:
ページをめくりながら注釈を探す際に見落としが発生する
どの指摘に対応済みか把握しにくい
PDFビューアとエディタを行き来する必要がある
解決法: pdfannotsによる注釈抽出
PDFに付けられたハイライトやメモを機械的に抽出し,どの文章にどのようなコメントがあるかをテキストエディタで確認できるようにする.
そのためにPDFの注釈をMarkdown形式で抽出するCLIツールであるpdfannotsを使用する.
インストール(macOS)
code: (bash)
# pipxをインストール(未導入の場合)
brew install pipx
# pdfannotsをインストール
pipx install pdfannots
基本的な使い方
code: (bash)
# 標準出力に表示
pdfannots reviewed.pdf
# ファイルに保存
pdfannots reviewed.pdf > comments.txt
ワークフロー
1. PDFにハイライト・メモを付ける
2. pdfannotsで注釈をテキスト抽出
3. 抽出したリストをチェックリストとして使用
4. 各項目に対応しながら修正
メリット:
全注釈がリスト化されるので見落としが生じにくい
チェックリストで対応状況を管理
テキストベースで作業できる
注意点
対応するPDFビューア
標準的なPDF注釈形式を使用するツールで付けた注釈は抽出可能:
Adobe Acrobat / Acrobat Reader
macOS Preview.app
PDF Expert
Foxit Reader
以下は抽出できない場合がある:
Webブラウザ内蔵のPDFビューア(独自形式の場合)
一部のクラウドサービス
日本語対応
pdfannotsはUTF-8に対応しており、日本語の注釈も問題なく抽出できる。
スクリプト化
繰り返し使う場合はスクリプト化しておくと便利。
code: (bash)
#!/bin/bash
# PDFからハイライト・メモ(注釈)を抽出するスクリプト
# 依存: pdfannots (pipx install pdfannots)
# 出力形式を統一: 全て「> 引用」と「コメント」の形式
set -e
if $# -eq 0 ; then
echo "Usage: $0 <input.pdf> output.txt"
echo " input.pdf - 注釈を抽出するPDFファイル"
echo " output.txt - 出力先(省略時は標準出力)"
exit 1
fi
INPUT_PDF="$1"
OUTPUT_FILE="${2:-}"
if ! -f "$INPUT_PDF" ; then
echo "Error: File not found: $INPUT_PDF" >&2
exit 1
fi
# pdfannotsの存在確認
if ! command -v pdfannots &> /dev/null; then
echo "Error: pdfannots not installed" >&2
echo "Install with: pipx install pdfannots" >&2
exit 1
fi
# pdfannotsの出力を統一フォーマットに変換
# "元の文" -- コメント → > 元の文\n\nコメント
convert_format() {
perl -0777 -pe '
# "text" -- comment 形式を > text\n\ncomment 形式に変換
s/ \* (Page \d+ \(^)+\)): "(^"+)" -- (.+)\n/
" * $1:\n > $2\n\n $3\n"/ge;
'
}
if -n "$OUTPUT_FILE" ; then
pdfannots "$INPUT_PDF" | convert_format > "$OUTPUT_FILE"
echo "Saved to: $OUTPUT_FILE"
else
pdfannots "$INPUT_PDF" | convert_format
fi