Capability matrix
This page keeps four easily confused things apart: the languages of this website, the languages of the desktop interface, what text-layer PDFs support, and how each scan-recognition language was tested. It also lists which features the current version implements and which are only planned.
Website languages
This website is available in 35 languages. Simplified Chinese, Traditional Chinese, Thai and English are complete; Japanese, Korean, Vietnamese and Indonesian have the core pages; the other languages have the browser tool pages only. Links to pages a language does not have go to the English version, marked "English".
- English — Complete
- 简体中文 — Complete
- 繁體中文 — Complete
- 日本語 — Core pages
- 한국어 — Core pages
- Deutsch — Browser tool pages
- Français — Browser tool pages
- Español — Browser tool pages
- Português (Brasil) — Browser tool pages
- Italiano — Browser tool pages
- Nederlands — Browser tool pages
- Polski — Browser tool pages
- Українська — Browser tool pages
- Русский — Browser tool pages
- Türkçe — Browser tool pages
- العربية — Browser tool pages
- עברית — Browser tool pages
- فارسی — Browser tool pages
- हिन्दी — Browser tool pages
- বাংলা — Browser tool pages
- اردو — Browser tool pages
- தமிழ் — Browser tool pages
- తెలుగు — Browser tool pages
- Svenska — Browser tool pages
- Dansk — Browser tool pages
- Suomi — Browser tool pages
- Română — Browser tool pages
- ไทย — Complete
- Tiếng Việt — Core pages
- Bahasa Indonesia — Core pages
- Bahasa Melayu — Browser tool pages
- Čeština — Browser tool pages
- Ελληνικά — Browser tool pages
- Norsk bokmål — Browser tool pages
- Magyar — Browser tool pages
- Filipino — Browser tool pages
Desktop interface languages
The desktop interface is available in 36 languages — a separate list from the website. It follows the Windows display language on first start and can be switched in the app.
简体中文 · 繁體中文 · English · ไทย · Tiếng Việt · Bahasa Indonesia · 日本語 · 한국어 · Deutsch · Français · Español · Português (Brasil) · Italiano · Nederlands · Polski · Українська · Русский · Türkçe · العربية · עברית · فارسی · हिन्दी · বাংলা · اردو · தமிழ் · తెలుగు · Svenska · Dansk · Suomi · Română · Bahasa Melayu · Čeština · Ελληνικά · Norsk bokmål · Magyar · Filipino
Text-layer PDFs (selectable text)
Text-layer replacement involves no recognition: matching is exact and case-sensitive, and the original font is reused where possible. Thai and Indic scripts are shaped with HarfBuzz. The current version does not yet support searching, replacing or redacting by keyword in right-to-left scripts such as Arabic (including Persian and Urdu) and Hebrew: if the text to find or the new text contains such characters, the job stops before anything is changed. Syriac and Thaana (Maldives) are also written right to left, so the same applies; they cannot be recognized on scans either.
Evidence: unit tests; no cross-language batch test on real files yet.
Scan recognition (OCR)
Results for 19 scripts: 2 primary, 8 usable with review, 8 experimental, 1 not usable on scans. Having a recognition model or language pack is not a tested result, and results cover only the document types tested.
The error rates and replacement pass counts in this table were measured on 14 October 2026 with the previous PDF engine. Since 20 October 2026 the software uses its own engine, pdfr, and these results have not been re-measured with the current version.
The current version does not yet support searching, replacing or redacting by keyword in Arabic (including Persian and Urdu), Hebrew and other right-to-left scripts: if the text to find or the new text contains such characters, the job stops before anything is changed. The replacement results in the Arabic and Hebrew rows of the table are records of the previous version and do not apply to the current one.
Checked against code version b6246f1 (pdfr) on 2026-10-21
| Script | Recognizer | Source | Tested on | Character error rate on script lines | Accepted on real scans | Result |
|---|---|---|---|---|---|---|
| Chinese (Simplified) | PP-OCRv6 | Built in | Tested throughout development | — | — | Primary support |
| English and Latin-script languages | PP-OCRv6 | Built in | Tested throughout development | — | — | Primary support |
| Thai | PP-OCRv5 | Built in | Real scans | 0.4% | 1/4 | Usable, needs checking Usable with review on modern print; experimental on old print and low-resolution scans |
| Chinese (Traditional) | PP-OCRv6 | Built in | Real + simulated scans | 0.3–0.4% | 23/23 | Usable, needs checking Horizontal replacement tested on a simulated scan only (23/23); vertical pages with zhuyin are refused |
| Japanese | PP-OCRv6 | Built in | Real scans | 0.3% | 8/9 | Usable, needs checking Vertical text and furigana tested on 3 real scans (8/9) |
| Korean | PP-OCRv5 | Language pack | Real scans | 2.9% | 5/5 | Usable, needs checking 5/5 measured after removing the hidden text layer; weight and typeface may not match |
| Vietnamese | Tesseract 5 | Language pack | Real scans | 3.1% | 2/4 | Usable, needs checking |
| Hindi (Devanagari) | PP-OCRv5 | Language pack | Real scans | 2.5% | 4/7 | Usable, needs checking |
| Georgian | Tesseract 5 | Language pack | Real scans | 1.6% | 5/6 | Usable, needs checking |
| Armenian | Tesseract 5 | Language pack | Real scans | 2.8% | 0/1 | Usable, needs checking |
| Tamil | PP-OCRv5 | Language pack | Real scans | 2.3% | 3/6 | Experimental |
| Arabic | PP-OCRv5 + Tesseract | Language pack | Real scans | ≈8–12% | 2/4 | Experimental Search and replace not supported in the current version |
| Hebrew | Tesseract 5 | Language pack | Real scans | 9.1% | 1/1 | Experimental Search and replace not supported in the current version |
| Bengali | Tesseract 5 | Language pack | Real scans | 9.1% | 2/4 | Experimental |
| Khmer | Tesseract 5 | Language pack | Real scans | 2.8% | 1/9 | Experimental |
| Burmese | Tesseract 5 | Language pack | Real scans | ≈10% | 3/5 | Experimental |
| Sinhala | Tesseract 5 | Language pack | Real scans | 6.2% | 1/6 | Experimental |
| Amharic | Tesseract 5 | Language pack | Real scans | 2.5% | 3/6 | Experimental |
| Lao | Tesseract 5 | Language pack | Real scans | 2.0% | 0/3 | Not usable on scans |
Primary languages are tested continuously throughout development, so this round of language reports does not list separate figures for them. · Last updated: 2026-10-21
Vertical text
| Japanese | Tested on real scans, usable with review | docs/ocr-real-scan-report.md §3.5, §4 日文: 3 real vertical scans, 8/9 replacements acceptable; furigana no longer erased silently (§7 item 4) |
|---|---|---|
| Simplified Chinese | Supported in code, untested | pdf_ocr.py vertical column detection applies to the ch model; no Simplified Chinese vertical real scan in docs/ocr-real-scan-report.md |
| Traditional Chinese with zhuyin | Refused (safe failure) | docs/ocr-real-scan-report.md §3.5: vertical Traditional Chinese with zhuyin is refused (safe failure) |
| Korean | Not supported | docs/ocr-real-scan-report.md §3.5: 1926 vertical Korean not in scope |
| Other scripts | Not supported | README.md §当前边界: other scripts horizontal only, tilt ≤ ~3° |
Implementation status of features and promises
"Planned" means the current code does not contain the feature; this site does not present it as an existing capability until it ships. "To be confirmed" is a business matter the operator has to decide.
Software features
| Item | Status | Evidence |
|---|---|---|
| Documents processed on your computer (open, recognize, replace, redact, save) | Implemented | pdf_engine.py, pdf_ocr.py (local ONNX/Tesseract); only model_packs.py and ai_translate.py use the network |
| Secure redaction with residue checks | Implemented | pdf_redact.py, pdf_residue.py; test_redact.py |
| Risk levels L0–L3 | Implemented | pdf_risk.py; test_risk.py |
| Read-back verification | Implemented | pdf_readback.py; test_readback.py |
| Operation record manifest.json | Implemented | README §操作记录; project_store.py, app.py (<name>.manifest.json); test_project_store.py |
| Folder batch processing with report | Implemented | batch_jobs.py, ui_batch.py; test_batch.py |
| Command-line (headless) mode | Implemented | README §无窗口模式; app.py --replace/--batch/--redact/--folder |
| Optional AI translation (cloud provider or local model) | Implemented | ai_translate.py, ui_ai.py; test_ai_translate.py |
| Open JPG, PNG, TIFF and other images directly | Implemented | image_docs.py |
| Project autosave and crash recovery | Implemented | project_store.py; test_project_store.py |
| Third-party component list (SBOM) | Implemented | tools/make_sbom.py; website/public/sbom/ |
Licensing & release
| Item | Status | Evidence |
|---|---|---|
| No watermark on output | Implemented | no watermarking code in the client |
| Offline activation and license validation | Planned | no licensing or activation code in the checked commit |
| Trial period and page counting | Planned | terms in website/src/site.config.ts PRICING (owner decision); no trial enforcement in the client |
| Online purchasing | Planned | website/src/site.config.ts PRICING.checkoutOpen = false, checkoutUrl empty |
| Installer code signing | Not provided | owner decision: not code-signed for now; website/src/data/release.json signer is empty |
| Microsoft Store listing | Planned | website/src/site.config.ts profiles.microsoftStore is empty |
| Automatic update check | Planned | see NETWORK_BEHAVIORS.update |
| Error reports | Planned | see NETWORK_BEHAVIORS.crash |
Business
| Item | Status | Evidence |
|---|---|---|
| MSI silent installer | Planned | build.ps1 builds a single exe; no MSI/WiX tooling in the repository |
| Central policy (turn off network features for everyone) | Planned | no Group Policy / registry policy code in the client |
| Per-seat licensing and central management | Planned | no licensing code in the client |
| Invoices and purchase orders | To be confirmed | a business process, not code; depends on the payment provider and the operator |
Network
In the current version only language pack downloads and optional cloud AI translation use the network, and both are started by you. Network behavior →