
UNIX Cafe | 第85回
HTMLからテキストを抜き出して、内容を確認する
PDFからテキストを取り出し、
空白や日付表記を整えた。
HTMLページも編集し終わった。
でも、最後にこう思うことはないでしょうか。
このPDFとHTML、本当に同じ内容だろうか?
目で見比べる方法もありますが、
文章が長くなるほど、見落としは起きやすくなります。
この記事では、
HTMLから文章だけを抜き出し、
整えたテキストをターミナルで照合する方法を紹介します。
はじめに|このページでやること
この記事で行う工程は、次の3つです。
- HTMLからテキストを抜き出す
- PDF由来のテキストと条件をそろえる
- 差分を確認する
大切なのは、
- 見た目は比べない
- 文章の中身だけを比べる
という考え方です。
HTMLから「本文だけ」を抜き出す
なぜHTMLをそのまま使わないのか
HTMLには、文章以外にも、
- ヘッダ
- メニュー
- フッター
- 画像や装飾
が含まれています。
照合に必要なのは、人が読む文章だけです。
タグを取り除き、本文をテキスト化する
今回は、HTMLから本文部分を抜き出したあと、すべてのタグを削除します。
HTMLエンティティ(  など)が含まれている場合は、
空白に置き換えます。
sed -e 's/<[^>]*>//g' body.html \
| sed -e 's/ / /g' -e 's/ / /g' \
> html_body.txtこの処理で、
- HTMLタグをすべて削除
 や特殊空白を通常の空白に変換
本文テキストだけのファイルが作られます。
PDF側と「同じ条件」にそろえる
なぜ空白をそろえるのか
PDFとHTMLでは、
- 改行の位置
- 空白の入り方
が異なります。
このまま比較すると、
内容とは関係のない差分が大量に出てしまいます。
空白をすべて取り除く(照合用)
意味に関係しない空白をすべて削除し、
「文字の並び」だけを比べられる状態にします。
sed 's/[[:space:]]//g' html_body.txt > html_cmp.txt
sed 's/[[:space:]]//g' pdf_body.txt > pdf_cmp.txtこれで、
- HTML由来テキスト
- PDF由来テキスト
が、同じ条件になりました。
diffで内容を照合する
基本の照合方法
diff -u html_cmp.txt pdf_cmp.txt結果の読み方
- 何も表示されない → 内容は完全に一致
- 差分が表示される → 確認が必要な場所がある
diffは、正解・不正解を決める道具ではありません。
「違いがある場所」を教えてくれるだけです。
照合結果をファイルに出力する
diffで出力された原稿は、改行の位置が違っていたり、行数が多かったりと、
モニターだけでは比較しにくい場合があります。
そういう時は、diffの結果をファイルに保存して、viなどのエディターで編集しましょう。
diff -u html_cmp.txt pdf_cmp.txt > edit.txtこうすると、diffの結果が、edit.txtというファイルに保存されます。
vi edit.txtそのファイルを vi で開くと編集可能な状態になり、成形すると文章が比較しやすくなります。
diff結果の正しい読み方
diffの表示には、次の記号が使われます。
-:HTML側にあった文字+:PDF側にあった文字
これは、
- 消すべき
- 正しい
という意味ではありません。
「左右で違っている」という記号です。
今回の照合で分かったこと
実際にdiffを取ると、差分は大きく3種類に分かれました。
本文ではない差分
PDFの先頭に、
- 店舗名
- メニューに相当する文字
が含まれていました。
これは本文ではないため、
無視して問題ありません。
見た目だけが違う差分
- 改行位置の違い
- 行の分かれ方の違い
内容は同じなので、
照合としては一致と判断できます。
本当に確認すべき差分
PDFにはあるが、HTMLにはない文章がありました。
- 野菜の下ごしらえが完了しました
- もらったスイーツのおみやげ
ここが、
人が判断すべきポイントです。
HTMLに追記するのか、
PDF側の補足情報として扱うのか。
この判断は、人が行います。
この方法が向いている場面
この照合方法は、次のような作業に向いています。
- PDF資料をHTML化するとき
- 公開前の最終チェック
「見落とさない」ための工程として、とても安心感があります。
まとめ|照合は安心のための工程
- HTMLから必要な文章だけを抜き出す
- PDF由来テキストと条件をそろえる
- diffで事実だけを確認する
ターミナルは、
間違いを指摘する道具ではなく、確認を手伝ってくれる道具です。
おわりに
目で見比べる作業は、
どうしても疲れます。
ターミナルを使った照合は、
人の代わりに「同じかどうか」を見てくれます。
人は、判断と修正に集中すればいい。
それが、この方法のいちばんの価値です ☕
さらに学びたいあなたへ
📘 用途ごとに選ぶ Linux のおすすめ本

