Scanning Documents
How to scan documents for accessibility compliance using the dashboard or API.
Supported Formats
adaline.report can scan the following document formats:
| Format | Extensions | Max Size |
|---|---|---|
| 100 MB | ||
| Word | .docx | 50 MB |
| PowerPoint | .pptx | 100 MB |
| HTML | .html | 10 MB |
| Markdown | .md | 10 MB |
| LaTeX | .tex | 10 MB |
Scanning via the Dashboard
- Click New Scan from the dashboard or reports page
- Drag and drop your file or click to browse
- The scan starts automatically on upload
- 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
Navigation (5% weight)
- 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.