跳到內容
getnextpdf.com

怎樣才算一份可及的 PDF——以及為什麼這很重要

Spec: ISO 14289-1Spec: ISO 14289-2Spec: ISO 32000-2Spec: WCAG 2.2

一份可及的 PDF,是一份看不見頁面的人仍然能讀懂的 PDF——以你所設想的順序、每一張圖片都被描述、每一個標題都被宣告為標題。本頁說明一份 PDF 如何承載那層意義——標記化內容、一棵結構樹、閱讀順序、替代文字——以及為什麼把它做對是值得的。

一份 PDF,預設是一組落在座標上的標記。它說把這個字符放在這裡把這張影像畫在那裡。它本身並不說這是一個標題這一列屬於那一欄,或這張圖片顯示一份已簽署的合約。一位視覺正常的讀者,會從版面瞬間補足這些空缺。一個螢幕報讀器做不到。它擁有的,只有檔案實際載明的內容。

於是一份未標記的 PDF 可以看起來毫無瑕疵,讀起來卻像是胡言亂語:一個雙欄頁面被一路橫著宣讀、一個資料表格被攤平成一串毫無關聯的數字、一張圖表就那樣默不作聲。資訊就在頁面上。它只是搆不著。對數以百萬計的人而言,那正是一份他們能用的文件與一份他們不能用的文件之間的差別——而且,這越來越成為一項合規的公共服務與一項法律暴險之間的差別。

  • 一份標記化 PDF 在視覺標記之上,承載一層平行的意義:這一段字符是一個標題、那一塊是一個清單、這一區是一個表格
  • 那些標記掛在一棵結構樹上——一份文件的邏輯大綱,與各物件落在頁面何處無關(Spec: ISO 32000-2, §14.7)。
  • 這棵樹固定了閱讀順序,因此內容會以你所設想的序列呈現,而不是字符碰巧被畫出來的順序。
  • 非文字內容承載一個文字等價物:影像的一段 /Alt 描述,或為某段報讀器原本會讀錯的字符段所提供的替換文字(Spec: ISO 32000-2, §14.8)。
  • PDF/UA(ISO 14289)是說明這一切何時齊備且正確的標準。它正是「可及的 PDF」作為一項工程主張、而非行銷主張時的意涵(Spec: ISO 14289-1)。

把一份可及的 PDF 想成兩層一同移動。內容層是你所見的:字符、線條、影像,置於座標上。結構層是它所代表的意義:一棵由元素構成的樹——文件、標題、段落、清單、表格、圖形——為每一塊內容命名並把它排好順序。

兩者由標記內容縫合在一起。頁面上每一段有意義的內容都被包裹起來並賦予一個識別符;對應的結構元素指回那個識別符。正是那道連結,讓輔助技術能走訪這棵邏輯樹,並在每一個節點上找到它所描述、頁面上的那段確切位元組。把這道連結做對,一個標題就會被宣告為一個標題;做錯了,結構就成了一段與所顯示內容不符的虛構。

這是讓人意外的那個概念。螢幕報讀器所使用的順序,是結構樹的順序,而那與內容落在頁面何處無關(Spec: ISO 32000-2, §14.7)。你可以把一個側欄畫在最後、把一個註腳畫在最前;只要這棵樹以你設想的序列把它們串起來,文件就會被正確地讀出。反過來說,一個排版精美、樹卻錯亂的頁面,會被精美地讀錯。版面是給眼睛的。樹是給其他所有人的。

為所有不是文字的東西提供一個文字等價物

標題為「為所有不是文字的東西提供一個文字等價物」的區段

一張照片、一個標誌、一張圖表、一條裝飾性的分隔線——這些都不是文字,因此預設都不會宣告任何內容。標記化 PDF 用替代描述補上這道缺口:影像的 /Alt 文字描述它所傳達的意思,而 /ActualText 為某段原本會被讀錯的字符段——例如一個連字或一個風格化的首字下沉——提供一個乾淨的替換(Spec: ISO 32000-2, §14.8)。純粹裝飾性的標記被標記為人工製品,因此被略過、而不是被當成雜訊讀出。規則很簡單:若它承載意義,它就得到一個文字等價物;若它不承載,它就被標記到一旁。

螢幕報讀器實際上如何讀取這個檔案

標題為「螢幕報讀器實際上如何讀取這個檔案」的區段

當輔助技術開啟一份標記化 PDF 時,它並不讀取頁面。它讀取那棵,並利用標記內容的連結,依序呈現每一個元素的文字。

  1. OpenThe reader finds the structure tree root in the document catalog, the entry point to the logical document.
  2. Walk the treeIt traverses the logical hierarchy — document, headings, paragraphs, lists, tables — in structure order.
  3. Map the roleEach structure type maps to a familiar role, so a heading is announced as a heading and a list as a list.
  4. Read the contentFor each element it reads the linked page text, or the alternate description when the content is an image.
  5. Skip the noiseAnything tagged as a decorative artifact is passed over, never spoken.
螢幕報讀器如何讀取一份標記化 PDF:它開啟文件、找到結構樹根、依序走訪邏輯樹、把每個元素對應到一個熟悉的角色、讀出該元素的文字或其替代描述,並略過任何被標記為裝飾性的內容。閱讀序列來自這棵樹,而不是來自內容落在頁面何處。

因為這個序列是樹的序列,一份正確標記的雙欄報告會先讀完一欄、再讀另一欄,一個表格會連同表頭逐格讀出,而一張圖形會宣告它的描述、而不是陷入沉默。報讀器永遠不必去猜作者的意圖,因為意圖已被記錄在檔案裡。

這一切,在 PDF/UA 之下成為一項可檢核的主張。PDF/UA-1 以 ISO 14289-1 發布,在標記化 PDF 模型之上載明了一份可及 PDF 的檔案層級要求(Spec: ISO 14289-1, §7)。PDF/UA-2,即 ISO 14289-2,把那些要求帶到 PDF 2.0 基線之上,並精修了真實內容如何對應到結構模型(Spec: ISO 14289-2, §8)。PDF/UA 管轄檔案的結構;更廣的網頁內容可及性指引描述一份文件所對照衡量的成效,而一項符合性主張會指名它實際達到的層級(Spec: WCAG 2.2, §5)。兩者協同運作:PDF/UA 說明機制齊備且正確,WCAG 框定何謂對人而言的「夠好」。

標記是看不見的,因此檢查它們唯一誠實的方式,是去看一個工具所回報的結構。一個最小的可及頁面有一棵真正的樹:一個文件根、一個標題、一個段落,以及一個承載描述、而非沉默的圖形。

StructTreeRoot
└─ Document
├─ H1 "Quarterly Report"
├─ P "Revenue rose across every region this quarter."
└─ Figure /Alt "Bar chart: revenue by region, all four up"

一個走訪這棵樹的報讀器,會宣告一個第一級標題、讀出那個段落,接著讀出圖形的描述——以那個順序,無論每個元素被畫在何處。把這棵樹剝掉,同一個頁面就變成三段彼此斷開的字符串,外加一個沉默的矩形。像素是相同的。體驗則不然。

常見的看法是,一份 PDF「可及,因為文字是可選取的」。可選取的文字意味著那些字符是真正的字元、而非一張掃描的圖片——必要,但遠遠不夠。沒有結構樹的可選取文字,依然沒有標題、沒有閱讀順序、沒有表格關係,也沒有影像描述。可及性關乎的是結構與意義,而不僅僅是可擷取字元的存在。一個檔案可以通過複製貼上,卻在螢幕報讀器面前徹底失敗。

第二個陷阱是把「已標記」當成一個是非分明的徽章。一個檔案可以已標記、卻仍然錯了:把內容貼錯標籤的標記、順序與意圖不符的樹、帶有空白或無用 /Alt 文字的影像。已標記是這場對話的開端,而不是它的結尾。

本頁說明那些概念,以及定義它們的那些標準。它不是一份符合性證書,沒有任何工具能憑自身核發一份。

PDF/UA structural accessibility — edition availability
EditionAvailability
Core

Core 會寫出標記化 PDF:它產出一棵結構樹、把裝飾性內容標記為人工製品,並承載你所提供的替代文字。

Pro

為複雜版面新增更豐富的結構對應——多層級表格、清單與圖形——使這棵樹更貼合所設想的閱讀順序。

Enterprise

新增一道結構符合性檢核與報告。它仍然是一道結構檢核,而非認證——最終判定屬於驗證器與一位人工審查者。

有兩道邊界值得明白說清楚。第一,引擎能產生正確的結構,卻無法評斷編輯品質:它會忠實地承載一段寫著「圖片」的 /Alt 描述,而那是作者的責任,不是引擎的。可及性是一個記錄意義的工具與一個提供意義的人之間的協作。第二,一道自動化的檢查——包括像 veraPDF 這樣的驗證器——確認機制齊備且格式良好。它並不確認一位使用螢幕報讀器的人,是否真能理解這份結果。最終定案是人為的。關於那道自動化檢查如何融入其中,請參見驗證 PDF/A 與 PDF/UA

  • 標準全貌——在 NextPDF 所追蹤的那個更廣的標準聯邦中,PDF/UA 與 WCAG 各居何處。
  • 字型:最難的部分——為什麼看似正確的文字仍可能無法搜尋,以及那如何牽動可及性。
  • PDF 究竟是什麼——結構樹所棲身其中的那個物件模型。
  • 驗證 PDF/A 與 PDF/UA——如何執行一道自動化的符合性檢核,以及它能與不能告訴你什麼。
  • 標記化 PDF(Tagged PDF)——一份在其視覺內容之上承載一層平行結構標記的 PDF,使輔助技術能搆得著文件的意義,而不僅是它的標記。
  • 結構樹(Structure tree)——一份文件的邏輯大綱(根、標題、段落、清單、表格、圖形),獨立於頁面版面而記錄,並用以決定閱讀順序。
  • 閱讀順序(Reading order)——內容呈現給讀者的序列,取自結構樹、而非取自字符被畫出的位置。
  • 替代文字(Alternative text)——非文字內容的一個文字等價物:影像的一段 /Alt 描述,或為某段原本會被讀錯的字符段所提供的 /ActualText 替換。
  • 人工製品(Artifact)——被標記為裝飾性的內容(一條分隔線、一個背景、一個浮水印),使報讀器略過它、而不是把它宣讀出來。
  • PDF/UA——PDF/Universal Accessibility,ISO 14289。定義一份標記化 PDF 何時真正可及的標準。PDF/UA-1 是 ISO 14289-1;PDF/UA-2 是 ISO 14289-2,建立在 PDF 2.0 基線之上。