Batch PDF to EPUB3 Conversion for EAA Compliance at Scale
The European Accessibility Act entered enforcement on June 28, 2026. For publishers, universities, libraries, and large organizations, the compliance challenge is not a single document — it's hundreds or thousands of PDFs in circulation that are now out of compliance by definition.
This guide covers the batch conversion workflow: how to triage a PDF library, automate conversions at scale using the toolkit.bot API, validate output, and estimate cost versus manual remediation alternatives.
Who Needs Batch Remediation
The following organization types typically have PDF inventories too large for document-by-document manual remediation:
- Academic publishers — backlists of journal articles and monographs, often 10,000+ titles
- University libraries — digitized collections, open access repositories, course materials
- Government agencies — policy documents, reports, forms, guidance notes
- Corporate publishers — annual reports, product documentation, whitepapers, e-learning modules
- NGOs and charities — research publications, advocacy reports, educational materials
If your organization has more than 50 PDFs in public distribution, a systematic batch approach is the only viable path to compliance within a defensible timeframe.
Step 1: Triage Your PDF Inventory
Not every PDF in your archive requires equal urgency. Prioritize based on three factors:
Compliance exposure
- Highest priority: PDFs actively distributed to EU consumers as part of a commercial product or service (e-books, course content, regulated disclosures, product documentation)
- High priority: Publicly accessible PDFs on your website (annual reports, white papers, research publications)
- Lower priority: Archived historical content not actively promoted or linked
Conversion complexity
- Simple (fast batch): Single-column reports, letters, policy documents, e-books — automated conversion handles these reliably
- Moderate (review recommended): Two-column academic papers, documents with tables, mixed-language content
- Complex (human review required): Legal instruments, financial prospectuses, documents with embedded forms, highly designed print layouts
Volume estimate
A rough sizing exercise: audit your CMS, SharePoint, or document repository for PDF file counts by category. Even an estimate within 2× of reality is sufficient for planning purposes.
Step 2: Automated Batch Conversion with the toolkit.bot API
The toolkit.bot API accepts PDF uploads and returns EPUB3 files — one request per document. For batch workflows, run requests in parallel to maximize throughput.
Python batch script (recommended)
import pathlib, requests, time, concurrent.futures, logging
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s")
log = logging.getLogger(__name__)
API_KEY = "your_api_key_here" # from toolkit.bot/premium
PDF_DIR = pathlib.Path("./pdfs")
OUT_DIR = pathlib.Path("./epub3")
OUT_DIR.mkdir(exist_ok=True)
HEADERS = {"X-API-Key": API_KEY}
WORKERS = 5 # parallel conversions; increase for API tier
def convert_one(pdf_path: pathlib.Path) -> tuple[str, bool]:
out = OUT_DIR / pdf_path.with_suffix(".epub").name
if out.exists():
return pdf_path.name, True # already done
try:
with open(pdf_path, "rb") as fh:
r = requests.post(
"https://toolkit.bot/convert",
files={"file": (pdf_path.name, fh, "application/pdf")},
headers=HEADERS,
timeout=180,
)
if r.status_code == 200:
out.write_bytes(r.content)
log.info("OK %s -> %s", pdf_path.name, out.name)
return pdf_path.name, True
else:
log.error("ERR %s -- HTTP %s: %s", pdf_path.name, r.status_code, r.text[:120])
return pdf_path.name, False
except Exception as exc:
log.error("EXC %s -- %s", pdf_path.name, exc)
return pdf_path.name, False
pdfs = sorted(PDF_DIR.glob("*.pdf"))
log.info("Found %d PDFs to process", len(pdfs))
with concurrent.futures.ThreadPoolExecutor(max_workers=WORKERS) as pool:
results = list(pool.map(convert_one, pdfs))
ok = sum(1 for _, s in results if s)
err = len(results) - ok
log.info("Done: %d converted, %d errors", ok, err)
Install dependencies: pip install requests. The script skips already-converted files, so you can restart safely after interruption. Increase WORKERS for API tier accounts — the free tier limits concurrent requests.
Shell script (simpler, sequential)
#!/bin/bash
# eaa_batch.sh -- sequential batch conversion
mkdir -p epub3
for f in pdfs/*.pdf; do
out="epub3/$(basename "${f%.pdf}.epub")"
[ -f "$out" ] && echo "Skip: $f" && continue
echo "Converting: $f"
curl -sX POST https://toolkit.bot/convert -H "X-API-Key: your_api_key_here" -F "file=@$f" -o "$out"
echo " -> $out"
sleep 1
done
echo "Batch complete."
Step 3: Quality Assurance — Sampling Strategy
Validating every converted EPUB manually is not practical at scale. A sampling strategy gives defensible assurance without exhausting QA resources:
Automated validation (every file)
Run ACE by DAISY on every converted EPUB automatically. It generates a WCAG 2.2 report in about 10 seconds per file:
# Install: npm install -g @daisy/ace
# Validate all EPUBs and write reports to ./ace-reports/
for f in epub3/*.epub; do
name=$(basename "${f%.epub}")
ace "$f" --outdir "ace-reports/$name" --silent
done
Review the ace-reports/*/report.json files for violations. A clean ACE report is the primary artifact for demonstrating EAA compliance due diligence.
Manual spot-check (5–10% sample)
Select a stratified sample across document types and verify in Thorium Reader:
- Text reflows at 200% and 400% zoom
- Headings navigate correctly in the reader TOC
- Tables have correct column headers
- Images have alt text (or are marked decorative)
- Reading order follows visual flow
Step 4: Record-Keeping for Compliance Audits
EAA enforcement relies on organizations demonstrating good-faith compliance efforts. Maintain a conversion log as an auditable artifact:
- Input inventory: List of PDFs processed (filename, date, size, original URL)
- Conversion metadata: Conversion date, toolkit version, ACE validation pass/fail per file
- Output location: Where the compliant EPUB3 is published or available on request
- Exception log: Documents that required manual review or could not be automatically remediated, with reason
The ACE by DAISY reports serve as the primary technical evidence. Store them alongside the EPUB3 files in your document management system.
Cost and Time Benchmarks
Organizations evaluating batch remediation often ask whether automated conversion is materially cheaper than alternatives. Based on typical document profiles:
| Method | Cost per document | Time per document | Quality |
|---|---|---|---|
| Manual PDF remediation (accessibility specialist) | €50–€250 | 2–8 hours | High |
| PDF tagging service (outsourced) | €15–€60 | 1–5 days turnaround | Medium-High |
| toolkit.bot API (automated PDF→EPUB3) | €0.50–€1.00 | 30–180 seconds | High (simple layouts) |
| toolkit.bot Premium (API + human review) | €15–€49 | 1–2 business days | High (all layouts) |
ROI illustration: An organization with 500 PDFs to remediate faces a manual cost of approximately €25,000–€125,000 (at €50–€250/doc). Automated batch conversion via the API reduces this to €250–€500 for straightforward documents, with premium review reserved for the 10–20% of complex documents that require it — typically €1,500–€10,000 total. The saving on a 500-document remediation project is €20,000–€115,000.
For Complex or High-Stakes Documents
Automated conversion handles single-column reports, business documents, e-books, and most academic papers reliably. For documents where failure carries legal or reputational risk — financial disclosures, regulatory submissions, legal contracts, highly designed print publications — human review after automated conversion is advisable.
toolkit.bot Premium Verification combines automated conversion with a human accessibility review pass, producing an EPUB3 with a signed ACE validation report. Starting at €49 per document. Suitable for high-value, high-stakes, or publicly prominent documents.
Start batch conversion — free tier for testing, API tier for production scale.
View API docs → Premium for complex docs →For accessibility teams managing EAA compliance workflows, see our dedicated guide at toolkit.bot/for/accessibility-teams →