1-1 Mizanpaj, cizim ve gorsel koruyan, 5000 sayfa kapasiteli, tekil islem kilitli, rijit guvenlik mimarisine sahip evrensel acik kaynakli PDF cevirici.
PolyCodex, karmaşık akademik makaleleri, teknik kılavuzları, kitapları ve kurumsal yayınları mizanpajını, piksel çözünürlüğündeki görsellerini ve vektörel çizimlerini bozmadan herhangi bir dilden hedef dile çeviren bağımsız bir araçtır. Hem yüksek performanslı Rust komut satırı motoru (polycodex) hem de modern, hafif ve reaktif bir QML masaüstü arayüzü (polycodex-gui) sunar.
- Kullanici Seviyesinde Izole Kilit ($XDG_RUNTIME_DIR):
- Ortak
/tmpdizini kullanilmaz. Kilit dosyasi systemd tarafindan oturuma ozel olarak tahsis edilen0700izinli/run/user/<UID>/polycodex.lockdosyasinda tutulur. - Kilit yolunda sembolik bag (symlink) tespiti yapildiginda (
O_NOFOLLOW/symlink_metadata) islem aninda durdurulur (TOCTOU ve symlink race saldirilarina karsi tam koruma).
- Ortak
- Tekil Islem Guvencesi (Single-Instance Lock):
- Isletim sistemi duzeyinde kilit mekanizmasi (
fs2) ile sistemde ayni anda sadece tek bir dokuman cevrilebilir. Yurutlukte bir islem varken ikinci islem aninda engellenir.
- Isletim sistemi duzeyinde kilit mekanizmasi (
- Atomik ve Kisitli Dosya Depolama (0600):
- Cikti dosyalari once hedef dizinde
.tmp_pdf_*gecici dosyasina yazilir, izinleri yalnizca dosya sahibinin erisebilecegi0600moduna getirilir ve POSIX atomik degistirme ile hedefe tasinir.
- Cikti dosyalari once hedef dizinde
- Hizmet Reddi (DoS) ve Bellek Sinirlandirmasi:
- Girdi dosyalari icin 2 GiB tavan dosya boyutu kontrolu uygulanir.
- Maksimum 5000 sayfa siniri (
MAX_ALLOWED_PAGES) ile zip-bomb veya sonsuz sayfa patlamalari onlenir.
- Komut Enjeksiyonu Savunmasi:
- Harici surecler (Zenity, Quickshell, Rust binary) cagrilirken kabuk (
sh -c) araci kullanilmaz; parametreler dogrudan ayrık arguman dizisi olarak aktarilir.
- Harici surecler (Zenity, Quickshell, Rust binary) cagrilirken kabuk (
-
Sayfa Duzeyinde Toplu Islem (Page-Level Batching - v1.1.0):
- Sayfa icerisindeki tum metin bloklari tek seferde vektorel olarak toplanir ve tekil bir istek (
translate_batch) ile ceviriciye iletilir. Bu sayede 5000 sayfalik kitaplarda network ve IPC gecikmesi 50-100 kat azaltilmistir.
- Sayfa icerisindeki tum metin bloklari tek seferde vektorel olarak toplanir ve tekil bir istek (
-
Dokunulmaz Varliklar: Sayfa icerisindeki gorsel akislari (
Do), dikdortgenler (re), cizgiler (m,l,c) ve boyamalar (f,S) aynen korunur. -
Dinamik Mikrotipografi (
TzOperatoru): Cevrilen metin blok bazinda olculur. Turkce gibi sondan eklemeli dillerde olusan metin uzamalari punto kucultulmeden%70 - %100bandinda yatay karakter sikistirmasi (Tz) ile kolon icine hapsedilir. -
Secici Filtreleme (
should_translate): Matematiksel formuller, denklem degiskenleri ($W, x, r$ ), sayilar, sayfa numaralari ve kod bloklari cevrilmeden muhafaza edilir.
- Mock Motoru: Test ve cevrimdisi dogrulama motoru.
- OpenAI / LM Studio / vLLM Backend (v1.1.0): Yerel veya uzak OpenAI uyumlu REST uclari (
http://localhost:1234/v1, vLLM, LocalAI) ile yuksek hizli ceviri. - Ollama Backend:
Llama 3.1,Qwen 2.5,Mistral NemoveyaDeepSeekgibi yerel modeller ile tamamen cevrimdisi ve veri gizliligi korumali ceviri. - LibreTranslate Backend: Acik kaynakli self-hosted REST ceviri sunucusu.
Arch Linux, Ubuntu, Debian, Fedora, openSUSE ve Manjaro uzerinde derleme beklemeden dogrudan kurmak icin:
curl -sSL https://raw.githubusercontent.com/ozdil/polycodex/main/install.sh | bashPKGBUILD uzerinden yerel derlemeli kurulum:
git clone https://github.com/ozdil/polycodex.git
cd polycodex
makepkg -siflatpak install flathub org.ozdil.PolyCodexsudo snap install polycodexGereksinimler:
- Rust (Cargo) 1.75+
- Quickshell ve Zenity (Masaustu arayuzu icin)
cargo build --releaseOlusturulan ikili dosya: target/release/polycodex
polycodex-guiOzellikler:
- Surukle-birak veya yerel sistem dosya secici (
zenity) ile girdi belirleme. - Tum dilleri iceren aciklamali acilir liste (Varsayilan uygulama dili: Ingilizce
en). - Tekil kilit rozeti ile sistem cakismalarini anlik bildirme.
- JetBrainsMono Nerd Font tabanli modern koyu tema.
# Interaktif mod (Dosya, dil ve klasor adimlarini sorar)
polycodex
# Otomasyon ve dogrudan cevirim
polycodex --input /yol/belge.pdf --source-lang en --target-lang tr --non-interactive
# Ollama yerel yapay zeka modeli ile cevirim
polycodex --input /yol/belge.pdf --source-lang en --target-lang tr --provider ollama --ollama-model llama3 --non-interactivecargo testTest kapsami:
- Kullaniciya ozel izole tekil kilit ve symlink savunmasi (
test_single_instance_lock_concurrency). - Varsayilan dosya adi cozumlemesi (
test_default_output_filename_resolution). - Varsayilan cikti klasoru cozumlemesi (
test_default_output_directory_resolution). - 5000 sayfa sinir sabiti ve kontrolleri (
test_page_limit_constant). - Ceviri onbellegi ve mock calismasi (
test_translator_cache_and_mock_backend). - Mizanpaj ve vektor koruma uctan uca testi (
test_pdf_layout_and_vector_preservation_e2e).
Bu proje MIT veya Apache-2.0 cift lisansi altinda yayimlanmaktadir.
Ayrintilar icin LICENSE-MIT ve LICENSE-APACHE dosyalarina bakiniz.