トピックを検索
スクリーンリーダーで読めない、スキャンやタグなしのPDF
カフェがランチメニューをPDFで載せていますが、印刷したメニューをスキャンしただけで文字がまったくないか、タグを付けずに書き出したため、見出しもなく2段組みを横切る順に読まれます。
q 595 0 0 842 0 0 cm /Im0 Do Q 問題
目の見えない利用者がカフェのメニューを開いても何も聞こえないか、見出しのない2段組みが混ざって聞こえるため、何が食べられて、いくらなのか分かりません。
近所のカフェ「Corner Kitchen」は、すべてのページから「ランチメニュー(PDF)」にリンクしています。画面のPDFは、テーブルに置いてあるメニューと同じ見た目です。タイトルの下に2つの段があり、左がスープとサラダ、右がメインで、料理ごとに価格が付いています。カフェはこのPDFを次の2つの方法のどちらかで作っていて、それぞれ違う形で問題が起きます。
1つ目は、印刷したメニューを事務所の複合機でスキャンし、その画像をアップロードしたものです。デザインツールからの書き出しでも、同じファイルになることがあります。印刷所にデザインどおり渡すためにCanvaの「Flatten PDF」(PDFのフラット化)をオンにすると、文字も画像になります。目の見えない利用者がリンクをたどってPDFを開くと、スクリーンリーダーはファイル名を読んだ後、何も読みません。ページは1枚の画像で、言葉が入っていないからです。行を選択しても何も選択されず、「スープ」を検索しても見つかりません。拡大すると、ぼやけた紙の写真が見えるだけです。
2つ目は、デザインアプリからタグを付けずに書き出したものです。言葉は実際のテキストなので読み上げられますが、ファイルが描く順にひと続きで読まれます。「ランチメニュー。スープとサラダ メイン。トマトスープ 6.50 キノコのリゾット 12.00。グリーンサラダ 7.00 グリルチキン 13.50。」と、行が2つの段をまっすぐ横切るため、スープの次にメイン料理が続き、タイトルと2つのセクション名が見出しであることも伝わりません。Hキーで次の見出しへ移動しようとしても、見出しは見つかりません。
サイトからリンクするPDFもサイトの内容の一部で、WCAGはページと同じようにPDFにも当てはまります。W3CはそのためのPDFの達成方法を公開しています。2つの形は、それぞれ別の達成基準を満たしていません。
- スキャンは、テキストの代替がない非テキストコンテンツで、1.1.1を満たしません。メニューの言葉はすべてピクセルとしてしか存在せず、タグのないPDFには、代替テキストを設定するFigureタグさえありません。
- タグなしの書き出しは、1.3.1と1.3.2を満たしません。PDFでは、見出し、リスト、表と、それを読む順序をタグが伝えます。ページでHTMLの要素が伝えるのと同じです。タグがないと、タイトルの大きさやセクション名の太さは見た目だけの情報になり、読む順序はファイルがたまたまテキストを描いた順になります。この例ではそれが段を横切るため、価格が別の料理の隣に来て、意味が変わってしまいます。
適合しないPDFも、適合した代替版がそばにあれば、適合したサイトの一部にできます。代替版とは、同じ内容を同じだけ新しく保ったページで、PDFが見つかる場所からたどれるものです。これが次の1つ目の修正です。
メニュー、料金表、サイズガイド、規約、パンフレットは、PDFでしか公開されていないことがよくあります。ファイルを読めない利用者には、カフェに読み上げてもらうほかに、内容を知る方法がありません。
10グループ中3グループに影響
- 全盲 (影響あり)
- 弱視 (影響あり)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響なし)
- 届く範囲・力 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 視覚を使わない スキャンでは、スクリーンリーダーが読めるテキストがないため、メニューはファイル名だけの空のページになります。タグなしの書き出しでは言葉はありますが、移動できる見出しがなく、2つの段が1行ずつ混ざるため、左右の料理と価格がひと続きに読まれます。
- 視覚が限られる スキャンを拡大しても、ぼやけた紙の写真が大きくなるだけで、折り返しも、文字の拡大も、配色の変更もできません。スマートフォンでは、どちらの形でも、印刷用のページを指で広げて動かしながら1行ずつ読むことになります。
- 言語・認知・学習の能力が限られる 読み上げツールで聞く人、フォントを変える人、ページを翻訳する人は、スキャンからは何も得られません。タグなしの書き出しは、2つのセクションが混ざった順に読み上げられます。
axe などのページのチェックは、ページ自体のHTMLを確かめます。PDFは別のファイルで、これらのツールは開かないため、すべての文書がスキャンでも、エラーなしで通ることがあります。見えているのはリンクだけで、リンクには問題がないからです。この診断では、ページがリンクするPDFのうち、各ページで最初の5つを、1回の診断で1回ずつ開き、そのバイト列を読みます。フォントもタグも代替テキストもなく、画像だけのPDFは問題として報告します。読めるものが何もないことは、コードだけで証明できるからです。そのほかのリンク先の文書は、内容しだいで結果が変わるため、人が確認する候補にします。テキストのあるタグなしのPDFは、失う構造が少ないことも多いこともあります。タグ付きのPDFも、タグの順序が違ったり、見出しが段落としてタグ付けされていたり、表がばらばらのテキストになっていたりします。WordやExcelのファイルは開きません。
修正に見えて修正にならない近道が2つあります。スキャンにOCRをかける(「検索可能にする」)と、隠れたテキストの層が加わり、「テキストがある」というチェックは通ります。しかしタグは加わらず、読み間違いもあります。「6.50」が「650」になったり、段の区切りが消えたりします。最近は、ビューアー自体がスクリーンリーダーの利用者のためにスキャンにOCRをかけるものもありますが、限界は同じで、そのビューアーでしか働きません。AIツールやAcrobatの自動タグ付けで「PDFをアクセシブルにする」と、たいていタイトルと言語を設定し、レイアウトからタグを推測します。2段組みのページでは、その推測でも順序が横切ったままになることがよくあります。
試してみる
カフェのランチメニューを開いて、スクリーンリーダー利用者と同じように聞いてみてください。
パネルには、スクリーンリーダーがメニューを先頭から読んだ内容が出ます。言葉は読まれますか?料理は、そのセクションと価格と一緒に読まれますか?「問題2」は、同じメニューをタグなしで書き出したものです。
問題あり 修正できますか?
メニューを先頭から読むと、スクリーンリーダーの読み上げ:
(ランチメニューを開く)
修正方法
メニューをHTMLのページにするか、元の文書から書き出したタグ付きのPDFに差し替えます。
- 1文書の言葉はすべて実際のテキストにし、文字の画像だけにしない。
- 2見出し、リスト、表は、HTMLの要素かPDFのタグで、表示の順にマークする。
- 3ページの印刷用として残すPDFは、ページとまったく同じ内容にする。
スキャンしたメニュー
<a href="/files/lunch-menu.pdf">ランチメニュー(PDF)</a>メニューをWebページにする
<a href="/lunch-menu">ランチメニュー</a> <!-- /lunch-menu --><h1>ランチメニュー</h1><div class="menu"> <section> <h2>スープとサラダ</h2> <ul> <li>トマトスープ、6.50</li> <li>グリーンサラダ、7.00</li> <li>レンズ豆のサラダ、7.50</li> </ul> </section> <section> <h2>メイン</h2> <ul> <li>キノコのリゾット、12.00</li> <li>グリルチキン、13.50</li> <li>豆のチリ、11.00</li> </ul> </section></div><p><a href="/files/lunch-menu.pdf">印刷用(PDF、1ページ)</a></p>この方法を選ぶ理由:画面で読むものは、PDFではなくページで公開する
ページの内容は、ページの大きさに描いた画像 Im0 だけです。フォントを使っていないため、読み上げ、選択、検索、拡大ができる言葉がなく、タグツリーもないため、代替テキストを置く場所もありません。
メニューがページのテキストになったため、スクリーンリーダーはすべての料理を読み、タイトルと2つのセクション名を見出しとして伝え、各セクションを3項目のリストとして、段ごとに順に読みます。HTMLの順序がそうなっているからです。スマートフォンでは折り返し、利用者の文字サイズに合わせて大きくなり、検索も翻訳もできます。サイトからは、ファイルではなくこのページにリンクします。
印刷用のPDFはなくてもかまいません。残す場合は、このページからだけリンクし、ページとまったく同じ内容にして、メニューが変わるたびに差し替えます。ページがPDFの適合した代替版になるのは、両方が一致している間だけです。ページ自体に印刷用のスタイルシート(@media print)を用意すれば、そろえておくものがなくなります。
どちらも1.1.1、1.3.1、1.3.2を満たします。メニュー、料金表、営業時間のように、画面で読まれ、よく変わるものには、たいていページのほうが向いています。サイトのテンプレートでページを1つ作るだけで、PDFのツールが要らず、どのブラウザーとスマートフォンでも同じように動き、編集のたびにタグを確かめる必要もありません。タグ付きのPDFは、請求書、署名した契約書、保存しておく規約、印刷用にデザインしたパンフレットのように、ファイルそのものが必要なときに残すものです。タグを付けた書き出しと変更のたびの確認が必要で、スキャンなら打ち直しか丁寧な修復が必要です。内容はページにし、その印刷用にタグ付きのPDFを用意する、という両方を行うサイトも多くあります。
PDFをチェッカーで開いたら、単独の文書として働くために必要なものも設定します。どれも同じ書き出しか、Acrobatの文書のプロパティで設定できます。
- タイトル:文書のタイトル([ファイル]>[プロパティ])を設定し、「文書のタイトルを表示」(DisplayDocTitle)をオンにする。ウィンドウとスクリーンリーダーが、「lunch-menu.pdf」ではなく「ランチメニュー」と伝える。
- 言語:文書の言語を設定し、スクリーンリーダーが正しい音声で読むようにする。別の言語の部分には、その部分の言語を設定する。
- 装飾はアーティファクトに:枠線、背景の模様、ページ番号はアーティファクトにして、料理の間で読まれないようにする。
- 価格の並び:料理と価格がそれぞれ別の段にそろえて並ぶ場合は、見出しセル付きの表としてタグ付けするか、この例のように、価格を料理と同じテキストのまとまりに入れる。
リンクには、開くものを書きます。「ランチメニュー(PDF、1ページ)」というリンク名なら、ファイルが開くことが分かり、スマートフォンでは特に役立ちます。ページへのリンクには、こうした表示は要りません。
サイトにすでにあるPDFは、一覧にして順に片付けます。購入や予約に必要なもの(メニュー、料金表、サイズガイド、規約)から始め、誰も使わないものは取り下げ、残りは次に更新するときに、ページかタグ付きのPDFにします。
入力欄のある注文書のような、PDFの入力フォームには、このガイドの範囲を超える問題があります。どの入力欄にも名前が必要で、入力欄の順序も確認が必要です。できる限りHTMLのフォームで作ってください。
AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得
修正の確認
マウスを使わない5つの確認
確認方法: スクリーンリーダー
OS、ブラウザー、PDFビューアーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。文書を差し替えたとき、書き出し直したとき、編集したときは、再度確認します。
制限
このサンプルは、どの文書でも同じ結果になることを保証するものではありません。PDFのコードは要点となる行だけを抜き出したもので、オブジェクト番号、フォント、座標は仮の値です。… はページの残りのタグ付きの行を表し、日本語の文字列は、実際のファイルではフォントの文字コードとして書かれます。スクリーンリーダーとPDFビューアーは、タグのないファイルをそれぞれ違う方法で扱い、順序を推測するものや、独自にOCRをかけるものもあるため、1つだけでなく、利用者が使うビューアーで確認してください。このガイドが扱うのは、文書の言葉がテキストとして存在し、構造と順序がタグ付けされているかどうかです。PDFのフォーム、文書内のコントラストや文字サイズ、それぞれのアプリのチェッカーが必要なWordやExcelのファイルは扱いません。実際に使用する支援技術で、操作全体を確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
参考資料
- WCAG Understanding: non-text-content(新しいタブで開きます)
- WCAG Understanding: info-and-relationships(新しいタブで開きます)
- WCAG Understanding: meaningful-sequence(新しいタブで開きます)
- WCAG Understanding: conformance(新しいタブで開きます)
- WCAG Technique PDF7(新しいタブで開きます)
- WCAG Technique PDF9(新しいタブで開きます)
- WCAG Technique PDF21(新しいタブで開きます)
- WCAG Technique PDF3(新しいタブで開きます)
- WCAG Technique PDF1(新しいタブで開きます)
- gov.uk: publishing-accessible-documents(新しいタブで開きます)
- support.microsoft.com: create-accessible-pdfs-064625e0-56ea-4e16-ad71-3aa33bb4b7ed(新しいタブで開きます)
- pac.pdf-accessibility.org: en(新しいタブで開きます)
コードを更新しても、使いやすさを保つために
ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。