Skip to main content

Scanning Documents

How to scan documents for accessibility compliance using the dashboard or API.

Supported Formats

adaline.report can scan the following document formats:

FormatExtensionsMax Size
PDF.pdf100 MB
Word.docx50 MB
PowerPoint.pptx100 MB
HTML.html10 MB
Markdown.md10 MB
LaTeX.tex10 MB

Scanning via the Dashboard

  1. Click New Scan from the dashboard or reports page
  2. Drag and drop your file or click to browse
  3. The scan starts automatically on upload
  4. Results typically appear within 5-30 seconds depending on document size

Scanning via the API

Upload a file as multipart/form-data to the scan endpoint:

curl -X POST https://api.adaline.report/api/v1/scan \
  -H "X-API-Key: your-api-key" \
  -F "file=@document.pdf"

The response is the complete compliance report -- no polling needed.

What Gets Checked

The scanner extracts the document's structure (headings, images, tables, forms, lists) and runs 12 checks across 6 categories:

Document Structure (25% weight)

  • Document language is set
  • Document title is present
  • Headings exist and follow a logical hierarchy (H1, H2, H3 without skipping)
  • Lists have proper type (ordered/unordered)

Images and Media (20% weight)

  • All images have alternative text
  • Figures have alt text
  • Figures have captions

Tables (15% weight)

  • Table header rows are marked

Tagged PDF Structure (15% weight)

  • PDF has structure tags (tagged PDF)

Forms (10% weight)

  • Form fields have associated labels
  • Documents over 5 pages have bookmarks

Scan Limitations

  • Password-protected PDFs must have protection removed before scanning
  • Scanned/image-based PDFs will be flagged as having no structure -- the scanner detects these but cannot OCR them in all cases
  • Very large documents (500+ pages) may take longer but are supported
  • Encrypted files are not supported

Batch Scanning

The API supports scanning documents one at a time. For batch workflows, loop through your files:

from pathlib import Path
import requests

API_KEY = "your-api-key"
for path in Path("./documents").glob("*.pdf"):
    with open(path, "rb") as f:
        res = requests.post(
            "https://api.adaline.report/api/v1/scan",
            headers={"X-API-Key": API_KEY},
            files={"file": f},
        )
    report = res.json()
    print(f"{path.name}: {report['overall_score']}% ({report['grade']})")

See the Python Examples and JS/TS Examples for more batch scanning patterns.

© 2026 Adaline LLC