Open-source plugin
Accessibility for PDFs
WordPress plugin, ktorý automaticky zlepšuje prístupnosť PDF súborov v Media Library. OCR pre naskenované dokumenty, záložky, metadata, embedding fontov — všetko na pozadí po uploade.
Kontext vzniku
Plugin vznikol pri práci na projekte sbagency.sk — webe agentúry Ministerstva hospodárstva SR, ktorý musí spĺňať WCAG 2.2 AA. Jednou z požiadaviek bola prístupnosť všetkých PDF dokumentov zverejnených na webe.
Ručné opravovanie desiatok naskenovaných dokumentov by trvalo dni. Postavil som nástroj, ktorý to rieši automaticky — a keďže rovnaký problém majú aj iné inštitúcie a weby, urobil som z neho open-source plugin pre WordPress.
Čo plugin rieši
OCR pre naskenované dokumenty
Plugin automaticky detekuje PDF súbory bez selektovateľného textu a spustí Tesseract OCR. Text sa stane čitateľným pre screen readery bez manuálneho zásahu. Stránky s existujúcim textom sa preskočia.
Záložky a navigačný outline
Ak PDF nemá navigačné záložky, plugin analyzuje veľkosti písma v dokumente a automaticky vygeneruje hierarchický outline (H1/H2/H3). Umožňuje používateľom so screen readerom skákať po sekcii.
Metadata dokumentu
Nastaví interný titul PDF z WordPress titulku prílohy, autora z názvu webu, predmet z popisu a jazykový atribút (sk, en, …). Čítačky obrazovky podľa jazyka vyberajú správnu výslovnosť.
Embedding fontov
Cez Ghostscript re-distilluje PDF s príznakom EmbedAllFonts. Zabraňuje situácii, keď PDF zobrazuje substitučné fonty alebo sa inak renderuje na zariadeniach bez daného fontu nainštalovaného.
Automatické spracovanie po uploade
Po nahratí PDF do Media Library sa automaticky naplánuje WP-Cron úloha. Upload sa okamžite dokončí — OCR a opravy prebehnú na pozadí bez blokovania admina. Status ⏳ sa zmení na výsledok.
Integrácia do Media Library
Sekcia "PDF Accessibility" sa zobrazí priamo v bočnom paneli pri každom PDF súbore — tam kde kopíruješ URL alebo pridávaš alt text. Tlačidlo "Fix now" spustí opravu bez opustenia stránky.
Ako to funguje
Admin nahráva PDF do WordPress Media Library ako zvyčajne.
Hook add_attachment zachytí nový PDF upload a naplánuje spracovanie na pozadí (štart za 5 sekúnd).
PHP zavolá bin/process_pdf.py cez shell_exec(). Script skontroluje PDF, spustí OCR ak treba, embedduje fonty, nastaví metadata a vygeneruje záložky.
Výsledok sa uloží do post meta a zobrazí priamo v paneli prílohy: ✓ Text / ✓ Záložky / ✓ sk / ✓ Fonty.
Tech stack
Požiadavky
- Self-hosted WordPress (VPS, dedikovaný server, Docker)
- Python 3.8+ s balíčkami ocrmypdf a pymupdf
- Tesseract OCR + jazykové balíčky
- Ghostscript pre font embedding
- PHP shell_exec() povolený (nie shared hosting)
Plugin volá systémové nástroje cez shell_exec() — nefunguje na shared hostingu.
Je určený pre self-hosted WordPress na VPS, dedikovanom serveri alebo v Docker kontajneri.
Pre koho je plugin určený