{"adoption": {"forks": 198, "observed_at": "2026-08-28T04:04:20.619161+00:00", "stars": 1315}, "canonical_url": "https://ross.abutalabs.com/products/polyglotpdf", "card": {"archived": false, "artifact_type": "application", "description": "(eBook，PDFs Translation) A multilingual eBook processing tool supporting all eBook formats. Features online and offline translation while preserving original layouts. Compatible with both scanned and digital PDFs. Elegant user interface. The world's highest-performing open-source layout-preserving eBook translator.", "domain": ["pdf", "files", "artificial-intelligence"], "enriched": true, "function": ["pdf", "ocr", "nlp", "machine-learning", "llm-inference", "gui", "web-framework"], "health_score": 60, "homepage": "https://github.com/CBIhalsen/PolyglotPDF", "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["CBIhalsen/PolyglotPDF"], "name": "CBIhalsen/PolyglotPDF", "platform": ["python", "cross-platform", "self-hosted"], "pushed_at": "2025-09-28T05:14:31+00:00", "repo": "CBIhalsen/PolyglotPDF", "stars": 1315, "tags": ["pdf-translation", "ebook-translator", "layout-preserving", "pymupdf", "scanned-pdf", "latex-formulas", "deepseek", "openai", "ebook-formats", "natural-language-processing", "localization", "web-server", "docker"], "topics": ["formulas", "latex", "math", "pdf", "pymupdf", "translation", "deepseek", "openai-api", "ebook"], "urls": [], "use_cases": ["translate a pdf document to another language while keeping the original layout", "translate scanned pdfs with ocr", "translate ebooks in any format preserving formatting", "translate academic papers with math formulas and latex", "batch translate large pdf reports with tables", "self-host a pdf translation web service", "translate pdfs offline without cloud services"], "what_it_is": "PolyglotPDF is a Python-based multilingual eBook and PDF translation tool that preserves original layouts while translating, supporting both digital and scanned PDFs via OCR. It offers a web UI, online and offline translation via LLM APIs (DeepSeek, GPT-4o-mini, Qwen, Doubao) and traditional services (DeepL, Bing, YouDao), and handles math formulas and tables.", "when_to_avoid": ["you only need raw text extraction from pdfs without translation", "you need pixel-perfect handling of complex vector math formulas inside tables", "you require a fully mature, bug-free tool for heavily styled or bold/colored mixed text", "you want a lightweight cli-only one-liner translation utility"], "when_to_choose": ["you need layout-preserving pdf translation rather than plain text extraction", "you work with scanned pdfs or complex layouts like tables and formulas", "you want a self-hosted tool with a choice of translation backends including LLMs", "you need to translate ebooks in multiple formats beyond pdf"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/polyglotpdf", "repo": "CBIhalsen/PolyglotPDF", "role": "main", "score": 42}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.619161+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:48:39.766541+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ef7d8d0778dd3e211c6e33ebebff98ab575fbe805551c15999d59f399acdf9ba", "fetched_at": "2026-08-28T04:04:20.619161+00:00", "kind": "readme", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}, {"content_hash": "426b482a5140aec37e8b55fc95f6cd339f59266f7a4284d359e3afdb41beb607", "fetched_at": "2026-08-29T12:07:06.449504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/CBIhalsen/PolyglotPDF"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 44, "longevity": 63, "rhythm": 28}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 886, "days_push": 339, "days_rel": 465, "gap_med": 38.0, "n_releases_24m": 3}, "score": 42, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}