Legible is a tool that synchronizes documents from your reMarkable tablet to your computer and optionally adds OCR (Optical Character Recognition) to make handwritten notes searchable.
You need reMarkable's free cloud sync feature enabled on your tablet. A reMarkable Connect subscription is not required, only the standard cloud sync that comes with every device.
No, this is an independent open-source project. It uses the reMarkable cloud API but is not affiliated with or endorsed by reMarkable AS.
Yes, it works with both reMarkable 1 and reMarkable 2 tablets, as long as cloud sync is enabled.
No! This tool runs entirely on your computer and syncs through the reMarkable cloud. No tablet modifications required.
Yes! OCR is optional. You can sync and convert documents without OCR by using the --no-ocr flag. However, without OCR, your handwritten notes won't be searchable. Ollama is only required if you want searchable PDFs with text layers.
- Run
legible auth - The tool will prompt you to visit https://my.remarkable.com/device/desktop/connect
- Copy the 8-character one-time code displayed on the website
- Enter the code when prompted in the terminal
- Your device will be registered and the token saved automatically
By default, credentials are stored in ~/.legible/token.json. This file contains your device token and should be kept secure.
By default, every 5 minutes. You can change this with --interval:
legible daemon --interval 15m # Every 15 minutes
legible daemon --interval 1h # Every hourYes! Use labels in the reMarkable app to organize your documents, then sync specific labels:
legible sync --labels "work,personal"No, syncing is read-only. It downloads copies of your documents but never modifies or uploads anything back to your reMarkable.
Documents are converted to PDF format. OCR-enabled PDFs have an invisible text layer that makes them searchable while preserving the original appearance.
Yes! Just specify your cloud storage folder as the output directory:
legible sync --output ~/Dropbox/ReMarkableTypically 2-3x the size of your reMarkable documents. OCR adds a text layer which increases file size. A 1MB handwritten notebook might become a 2-3MB searchable PDF.
- The PDF pages are rendered as images
- Images are sent to Ollama's vision models (like llava) which analyze and extract text
- The AI model provides superior handwriting recognition compared to traditional OCR
- The extracted text with positional information is added as an invisible layer to the PDF
- The result is a searchable PDF that looks identical to the original
Ollama uses modern vision-language models (VLMs) that provide significantly better handwriting recognition compared to Tesseract, which is optimized for printed text:
- Accuracy: 85-95% for handwriting vs 40-60% with Tesseract
- Context awareness: Models understand document structure
- Language flexibility: Handles multiple languages without explicit configuration
- Local processing: All OCR happens on your machine, preserving privacy
OCR is CPU-intensive and processes each page individually. Factors affecting speed:
- Document size (more pages = longer processing)
- System resources (CPU speed, available RAM)
- OCR complexity (handwriting is slower than typed text)
Typical speeds: 2-5 seconds per page on a modern laptop.
Yes:
- Skip OCR:
--no-ocr(much faster, but not searchable) - Use incremental sync: Only new/modified documents are processed
- Reduce sync frequency in daemon mode
- Run on a faster machine with more CPU cores
Ollama vision models automatically detect and handle multiple languages without explicit configuration. The models support:
- All major European languages (English, Spanish, French, German, Italian, etc.)
- Asian languages (Chinese, Japanese, Korean)
- And many more
No additional language packs or configuration needed! The model handles language detection automatically.
Yes! Configure the model in ~/.legible.yaml:
ollama:
model: llava # Default: fast and good quality
# model: llava:13b # Larger model, better accuracy, slower
# model: mistral # Alternative vision modelAvailable models:
llava- Recommended, good balance of speed and accuracyllava:13b- Larger model for best accuracymistral- Alternative vision model- Any Ollama model with vision capabilities
Download a new model: ollama pull llava:13b
Approximately 8-10GB for Ollama + a vision model like llava. This is a one-time download that's cached locally.
No, Legible requires internet access to sync with the reMarkable cloud. However, once documents are synced, you can view them offline.
- Your authentication token is stored locally with restricted permissions (0600)
- Communication with reMarkable cloud uses HTTPS
- No data is sent to third parties
- Documents are stored locally on your computer
None. This tool does not collect, transmit, or store any analytics or telemetry. All data stays on your computer.
Yes! This is open-source software. You can review the code on GitHub: https://github.com/platinummonkey/legible
Solution:
- Ensure cloud sync is enabled on your reMarkable (Settings → Storage → Connect)
- Get a fresh authentication code
- Clear old credentials:
rm -rf ~/.legible - Re-authenticate:
legible auth
Possible causes:
- Model not suited for the handwriting style
- Complex or unclear handwriting
- Very small text or dense writing
Solutions:
- Try a more capable model:
mistral-small3.1orllava:13bfor better accuracy# Download better model ollama pull mistral-small3.1 # Update config # ~/.legible.yaml: # ollama: # model: mistral-small3.1
- Verify Ollama is running properly:
ollama list - Check Ollama logs for errors
- Try without OCR if quality is unacceptable:
--no-ocr
Common causes:
- Out of memory: OCR is memory-intensive
- Solution: Reduce sync frequency or skip OCR
- Permission errors: Can't write to output directory
- Solution: Check directory permissions
- Disk full: No space for new documents
- Solution: Free up disk space
Check logs:
legible daemon --log-level debugThis is normal! The first sync processes all your documents. Subsequent syncs are much faster as only new/changed documents are processed.
Estimates:
- 10 documents: 30-60 seconds
- 50 documents: 3-5 minutes
- 100+ documents: 10-20 minutes
Use --no-ocr for a much faster first sync, then enable OCR later.
Causes:
- Document was deleted from reMarkable cloud
- Sync state is out of date
- Document hasn't synced to cloud yet
Solutions:
- Force re-sync:
legible sync --force - Wait for cloud sync to complete on your tablet
- Check document still exists in reMarkable app
Yes, but use different output directories and state files:
# Instance 1: Work documents
legible daemon --output ~/work-remarkable --labels work
# Instance 2: Personal documents
legible daemon --output ~/personal-remarkable --labels personalSee examples/systemd/legible.service for a systemd service file template.
Currently, filenames match your reMarkable document names. Customization would require forking the project.
The internal packages in internal/ are available for use, but they are not considered a stable public API and may change between versions.
Yes! See CONTRIBUTING.md for guidelines on contributing.
rmapi is a lower-level tool for accessing the reMarkable cloud. Legible builds on rmapi to provide:
- Automatic PDF conversion
- OCR text layer addition
- Daemon mode for continuous sync
- State tracking for incremental updates
The official reMarkable desktop app is great, but doesn't offer:
- OCR for searchable text
- Automated background sync
- Bulk export
- Label-based filtering
- Command-line interface for automation
- Check the documentation: README.md has detailed usage information
- Search existing issues: https://github.com/platinummonkey/legible/issues
- Open a new issue: If you found a bug or have a feature request
- Start a discussion: For general questions or ideas