Make PDFs accessible to screen readers β automatically
Supports PDF and LaTeX input β outputs accessible PDF or modified LaTeX source.
Uses AI vision to generate alt-text for images, charts, and math formulas.
Adds semantic structure (headings, paragraphs, reading order) for screen reader navigation.
Validates against PDF/UA standard with a 0-100 accessibility score.
Turn hours of manual remediation into minutes.
Quick Start β’ Features β’ API Reference β’ Deployment β’ Contributing
This project was developed in collaboration with MorphMind.
Try it now β no setup required: agentlab.morphmind.ai (Free trial available)
The easiest way β no setup required:
- Visit agentlab.morphmind.ai
- Find the PDF Accessibility Remediator agent
- Upload your PDF and get instant results
Free trial available β start remediating PDFs in seconds.
# Clone the repository
git clone https://github.com/AIScientists-Dev/AI-Powered-PDF-Accessibility.git
cd AI-Powered-PDF-Accessibility
# Create virtual environment
python3.11 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Install veraPDF (required for validation)
# macOS:
brew install verapdf
# Linux: Download from https://verapdf.org/software/
# Set up environment
echo "GEMINI_API_KEY=your_api_key_here" > .env
# Run the server
python -m uvicorn http_server:app --host 0.0.0.0 --port 8080
# Test it
curl http://localhost:8080/healthGet an instant 0-100 score based on PDF/UA compliance, with letter grades and actionable insights.
{
"score": 82,
"grade": "B",
"issues_by_severity": {
"critical": 0,
"serious": 3,
"moderate": 1
}
}Automatically generate descriptive alt-text for images and figures using Google Gemini vision AI.
| Category | Tools |
|---|---|
| Analysis | analyze_pdf, validate_pdfua, validate_pdfa, detect_headings |
| Remediation | make_accessible, add_full_structure, add_alt_text, fix_link_alt_texts |
| Figures | extract_figures, generate_alt_text, get_link_annotations |
| LaTeX | analyze_latex, prepare_latex, make_latex_accessible |
| Education | get_accessibility_tutorial |
- MCP (Model Context Protocol) - Open standard for AI tool integration
- PDF/UA (ISO 14289) - International PDF accessibility standard
- veraPDF - Industry-standard validation engine
- WCAG 2.1 - Web Content Accessibility Guidelines alignment
These endpoints return clean, structured JSON designed for AI agent consumption:
Validate PDF against PDF/UA with MorphMind Score.
curl -X POST http://localhost:8080/agent/validate \
-H "Content-Type: application/json" \
-d '{"arguments": {"pdf_path": "/path/to/file.pdf"}}'Response:
{
"success": true,
"score": 82,
"grade": "B",
"compliant": false,
"summary": {
"passed_rules": 100,
"failed_rules": 4
},
"issues_by_severity": {
"critical": 0,
"serious": 3,
"moderate": 1,
"minor": 0
},
"failures": [
{
"clause": "7.1",
"test_number": "10",
"description": "DisplayDocTitle key missing"
}
]
}Full remediation pipeline with AI alt-text generation.
curl -X POST http://localhost:8080/agent/make-accessible \
-H "Content-Type: application/json" \
-d '{"arguments": {"pdf_path": "file_id", "document_type": "technical report"}}'Response:
{
"success": true,
"output_file": "abc123_document_accessible.pdf",
"figures_processed": 3,
"structure_enhancements": {
"headings_tagged": 15,
"links_fixed": 8,
"xmp_metadata_added": true
}
}| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/tools |
GET | List all available tools |
/tools/{name} |
POST | Execute any tool by name |
/upload |
POST | Upload PDF file, returns file_id |
/download/{file_id} |
GET | Download processed file |
/batch |
POST | Execute multiple tools in sequence |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your Application β
β (AgentLab, MCP Clients, etc.) β
βββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Accessibility Agent Backend β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β HTTP API (Port 8080) β β MCP Transport (Port 8081) β β
β β β’ /agent/validate β β β’ Streamable HTTP β β
β β β’ /agent/make-accessibleβ β β’ API Key authenticated β β
β β β’ /upload, /download β β β β
β βββββββββββββ¬ββββββββββββββ βββββββββββββ¬ββββββββββββββββββ β
β β β β
β ββββββββββββ¬ββββββββββββββββββ β
β βΌ β
β βββββββββββββββββββββββββββ β
β β src/mcp_server.py β β
β β 25 Accessibility Tools β β
β βββββββββββββ¬ββββββββββββββ β
β β β
β βββββββββββββββββββββββΌββββββββββββββββββββββ β
β βΌ βΌ βΌ β
β ββββββββββββ ββββββββββββββ ββββββββββββββ β
β β veraPDF β β Gemini AI β β pikepdf β β
β βValidationβ β Alt-text β βPDF Editing β β
β ββββββββββββ ββββββββββββββ ββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Deploy on any cloud provider (AWS, GCP, Azure) or on-premises:
# Clone and setup
git clone https://github.com/AIScientists-Dev/AI-Powered-PDF-Accessibility.git
cd AI-Powered-PDF-Accessibility
# Configure environment
cp .env.example .env
# Edit .env with your GEMINI_API_KEY
# Run with systemd (see deploy/ folder for service files)
./deploy/update-ec2.shCI/CD: Push to main triggers GitHub Actions deployment.
| Variable | Description | Required |
|---|---|---|
GEMINI_API_KEY |
Google Gemini API key for alt-text generation | Yes |
PORT |
HTTP server port (default: 8080) | No |
HOST |
Bind address (default: 0.0.0.0) | No |
MCP_API_KEYS |
Comma-separated API keys for MCP transport | No |
We welcome contributions! This project is open source under the MIT License.
- π Internationalization - Support for more languages
- π Table remediation - Improve complex table handling
- π Math accessibility - Better equation support
- π§ͺ Testing - More diverse PDF test cases
- π Documentation - Tutorials and guides
# Fork and clone
git clone https://github.com/YOUR_USERNAME/AI-Powered-PDF-Accessibility.git
# Install dev dependencies
pip install -r requirements.txt
pip install pytest black flake8
# Run tests
pytest
# Format code
black .- 1 billion+ people worldwide have disabilities (WHO)
- 90%+ of PDFs lack proper accessibility features
- Legal requirements in most countries (ADA, Section 508, EU Directive)
- 2-4 hours β 2-4 minutes: Time savings with AI automation
Ask the agent about accessibility:
curl -X POST http://localhost:8080/tools/get_accessibility_tutorial \
-H "Content-Type: application/json" \
-d '{"arguments": {"topic": "what_is_accessibility"}}'Topics available:
what_is_accessibility- Introduction to PDF accessibilitycommon_struggles- Challenges people facehow_we_help- How AI agents solve these problemsgetting_started- Quick start guideabout_project- About this project
MIT License - Use freely, contribute back if you can.
- Try it now: agentlab.morphmind.ai β Free trial available
- MorphMind: morphmind.ai
- MCP Specification: modelcontextprotocol.io
- veraPDF: verapdf.org
- PDF/UA Standard: ISO 14289
Built with β€οΈ by MorphMind