Alle wesentlichen Änderungen an diesem Projekt werden hier dokumentiert. Format basiert auf Keep a Changelog.
- Reject missing rasterized pages, empty per-page OCR results and OCR results with more than one page per source image; preserve previous output on failure.
- Write OCR PDFs, merged PDFs and JSON manifests to private same-directory staging files before replacing their targets. Keep lazy PDF sources open through staging, then close them before publication. Clean failed disk fallbacks without masking the primary error.
- Prevent a merged output from replacing an input or its filesystem alias. Archive individual results by staging a complete copy before removing the original. Report archiving failures separately from an already saved collective PDF, including localized GUI warnings.
- Reopen written PDF stages and verify their page count before publication. Catch manifest-export failures in the GUI and retain the previous manifest. Add 19 behavior regressions; see
SAVE_SAFETY.mdfor evidence and limits. Version 1.1.4 remains frozen.
Bug-Sweep BS-11: EXIF-Metadaten-Erhalt, Merge-Härtung, Worker-Abbruchsicherheit & Pfad-Resilienz (2026-10-03)
- EXIF-Metadaten & Bild-Transposition (
_load_source_images):_load_source_imagesüberträgtinfound_exif(ausim.getexif()) nun explizit auf die zurückgegebenen Bildframes, daImage.copy()diese standardmäßig verwirft. Dadurch funktioniertImageOps.exif_transposeinnormalize_image_for_ocrnun auch verlässlich für smartphone- und scan-basierte Bilddateien (Orientierungs-Tags 3, 6, 8).- Resiliente Behandlung von
EOFError/OSErrorbeim Frame-Seek (im.seek()) für abgeschnittene oder unvollständige Multiframe-TIFFs.
- Tempfile-Leak-Prävention (
_ocr_pdf):- Im Fallback-Pfad für NamedTemporaryFiles (
tmp.name) wird die temporäre PDF-Datei bei einem Fehler währendpikepdf.Pdf.open()sofort per try-except entkoppelt und gelöscht, statt als Datenmüll auf der Festplatte zu verbleiben.
- Im Fallback-Pfad für NamedTemporaryFiles (
- System-Shell & Pfad-Sicherheit (
open_file_path,open_file_folder):open_file_pathundopen_file_folderweisenNone, leere Strings und Whitespace strikt ab (return False). Verhindert fehlerhaftes Öffnen des aktuellen Arbeitsverzeichnisses (CWD) durchPath("")undTypeErrorbeiNone.open_file_pathöffnet ausschließlich reguläre Dateien (is_file()).
- Merge- & Stapel-Resilienz (
merge_ocr_outputs,merge_selected,_auto_merge_completed_batches):merge_ocr_outputssanitisiertmerged_namegegen Verzeichnis-Traversal (Path.name) und erzwingt eine.pdf-Endung, wenn diese weggelassen wurde.- Überprüfung auf mindestens zwei existierende PDF-Dateien vor der Verarbeitung.
- Abfang von
OSErrorbeishutil.move(), sodass vorübergehend gesperrte Einzelseiten nicht den gesamten erfolgreichen Merge-Lauf abbrechen. - In
merge_selectedund_auto_merge_completed_batcheswerden Ausgabepfade nur dann hinzugefügt, wenn sie tatsächlich auf der Festplatte existieren.
- Worker-Thread Concurrency & Lebenszyklus (
OCRWorker,OCRConverterGUI):OCRWorkerum_is_cancelled-Flag undstop()-Methode erweitert, um die Abarbeitung verbleibender Dateien bei Schließen des Fensters geordnet zu stoppen.on_start()schützt mit Re-Entrance-Guard vor Mehrfachstarts und verhindert die Zerstörung laufender QThreads.closeEvent()signalisiert dem Worker einen Stopp und wartet mit sicherem Timeout.
- Pfad- & Eingabevalidierung (
ensure_tesseract,PDFListWidget.add_file,resolve_ocr_output_path):ensure_tesseractsanitisiert denlang-Parameter gegen Pfad-Traversal (../) und weist ungültige/leere Eingaben ab.add_fileweist Ordner mit unterstützten Dateiendungen (z.B.ordner.pdf) ab und initialisiertUserRole + 4definiert mitNone.resolve_ocr_output_pathsortiert Funde mittels_safe_mtimeund defensiven_safe_is_file/_safe_is_dirPrüfungen ab, um Rennbedingungen bei paralleler Dateilöschung zu verhindern.
- Automatisierte Regressionstests (
tests/test_bugsweep_exif_merge_worker_resilience_20261003.py):- 10 neue hermetische Unit- und Regressionstests für alle 10 Facetten hinzugefügt (10/10 passed).
- Gesamt-Prüfstand auf 155/155 Tests ausgebaut (100% grün). [G 2026-10-03]
Pfad B: Discoverability, Visuelle Vier-Sichten-Architektur, Level 1 SBOM Re-Audit & Vertragstests (2026-10-01)
- Visuelle Vier-Sichten-Architektur (ASCII Four-View Architectural Topology):
- Vollständige zweisprachige ASCII Four-View Architectural Topology in
README.mdundREADME_de.mdin Section 2 direkt unterhalb des Mermaid-Diagramms implementiert ([VIEW 1: INGESTION, DRAG-AND-DROP QUEUE & ACCESSIBILITY]bis[VIEW 4: AIR-GAP DEFENSE PERIMETER, ZERO-EGRESS & GOVERNANCE BOUNDARY]sowie[SICHT 1]bis[SICHT 4]). - Bilaterale HTML-Anker
#four-view-architectural-topology-projectionund#vier-sichten-architektur-topologie-projektionin beiden Sprachfassungen reziprok verankert.
- Vollständige zweisprachige ASCII Four-View Architectural Topology in
- Level 1 SBOM Text-Begleitdatei Re-Audit (
THIRD_PARTY_LICENSES.txt):- Re-auditiert Stand: 2026-10-01 mit lückenloser Bestätigung aller 10 Architektur- und Governance-Invarianten (INV-LOCAL-01 bis INV-SLA-10).
- Unprivileged RunAsInvoker Non-Elevation (
INV-UNPRIV-02), Subprozess-Isolation für Tesseract/Poppler (INV-ISOLATION-04) und 100% Zero-Copyleft / Zero-Egress Perimeter re-zertifiziert.
- PEP 621 SEO-Keywords-Erweiterung (
pyproject.toml):keywords-Array um High-Intent Suchbegriffe (zero-egress,offline-first,batch-ocr,accessibility) erweitert.- Strikte Version-Freeze-Disziplin: Version 1.1.4 unverändert beibehalten (gemäß
T-20260920-167562623).
- Dokumentations- & KI-Kontext-Synchronisation:
README.mdundREADME_de.md: Badges fürlast checked/zuletzt geprüft(2026-10-01) und Pytest (145 passed / 100%) synchronisiert.llms.txt: Stand 2026-10-01, 145 Tests und 4-View-Topologie-Zusammenfassung hinterlegt.MARKETING-LOG.txt: Umfassende Pfad B Revisionsdokumentation Stand 2026-10-01 mit 4 Personas, 10-Dimensionen-Vergleichsmatrix und konkreten Discoverability-Empfehlungen angelegt.
- Automatisierte Vertragstests (
tests/test_metadata.py):- 4 neue automatisierte Contract-Tests für ASCII-Vier-Sichten-Topologie, Level 1 SBOM Recency 2026-10-01, PEP 621 SEO-Keywords, MARKETING-LOG.txt und CHANGELOG.md Recency hinzugefügt.
- Gesamt-Prüfstand auf 145/145 Tests ausgebaut (100% grün). [G 2026-10-01]
Pfad A: Repository-Hygiene, CI-Lifecycle-Workflows, NOTICE-Attribution & Level 1 SBOM Text-Begleitdatei (2026-09-30)
- Formelle NOTICE-Datei: Urheberrechts- und Open-Source-Attributions-Hinweis im Root für Lukas Geiger, doc-bricks und open-bricks contributors angelegt (
NOTICE). - Level 1 SBOM Text-Begleitdatei (
THIRD_PARTY_LICENSES.txt): Re-auditiert Stand 2026-09-30 unter Bestätigung aller 10 Architektur- und Governance-Invarianten (INV-LOCAL-01 bis INV-SLA-10), unprivileged RunAsInvoker Non-Elevation (INV-UNPRIV-02) sowie Zero-Copyleft / Zero-Egress Offline Architektur. - CI-Lifecycle-Workflows & Governance:
.github/workflows/auto-assign.yml: Automatisierte Issue- und PR-Zuweisung mit Least-Privilege-Berechtigungen (pull-requests: write,issues: write), 5 Min. Timeout und Concurrency-Härtung..github/workflows/label-sync.yml: Automatischer Label-Sync viaEndBug/label-sync@v2bei Änderungen an.github/labels.yml..github/labels.yml: 11 kanonische Standard-Labels gemäßGOVERNANCE.md§4.2 angelegt..github/workflows/welcome.yml: Willkommens-Bot für erste Issues und PRs viaactions/first-interaction@v3mit Concurrency-Härtung.
- Multi-Host Cloud-Sync-, Lock- & Cache-Defense (
.gitignore):- Zusätzliche Host-Token (
*-IDEAPAD*,*-IDEAPAD-GEI*,*_WORKSTATION*,*_WORKSTATION-LG*,*-WORKSTATION.*,*-WORKSTATION-LG.*,*-MacBook*). - Erweiterte Kanonische Lock-Dateien (
LOCK.dev.*,LOCK.antigravity.*,LOCK.bugsearch.*,.automation-lock). - Cache- & Temp-Dateien (
Desktop.ini,ehthumbs.db,*.swo,TASKPLAN_*.md,.pytest_temp/,.pytest_tmp*).
- Zusätzliche Host-Token (
- PEP 621 Standardisierung in
pyproject.toml:license-filesWhitelist umNOTICEundTHIRD_PARTY_LICENSES.txterweitert (["LICENSE", "NOTICE", "THIRD_PARTY_LICENSES.md", "THIRD_PARTY_LICENSES.txt"]).[project.urls]um 'Contributing', 'Plain-Text License', 'Third-Party Licenses (Text)', 'Level 1 SBOM' und 'Notice' erweitert.- Pytest addopts um
--basetemp=.pytest_temperweitert undnorecursedirsum.pytest_temp,.pytest_tmp*,.hypothesis,.turbo,.nyc_output,.toxsynchronisiert (auch inpytest.ini). - Version 1.1.4 strikt unverändert gemäß
T-20260920-167562623beibehalten.
- Contributing Guidelines (
CONTRIBUTING.md): Um Plan D Local Dev Setup, Pre-Commit Quality Gates und Version-Freeze-Disziplin ergänzt. - Dokumentation & Badges:
README.md,README_de.mdundllms.txtauf Prüfstand 2026-09-30, Attribution NOTICE, Level 1 SBOM Text-Begleitdatei und Teststand synchronisiert unter Wahrung aller 18 Schnellnavigations-Anker.- Lokales
MARKETING-LOG.txtum Pfad A Revisionsbericht Stand 2026-09-30 erweitert.
- Automatisierte Vertragstests (
tests/test_metadata.py): 7 neue Contract-Tests für NOTICE-Attribution, CI-Workflows, labels.yml, welcome.yml, Contributing Guidelines, Level 1 SBOM Invarianten und CHANGELOG-Eintrag implementiert. [G 2026-09-30]
- Turnusgemäßer GitHub Check & Verifikation: Vollständiger Hygiene-, Privacy- und Lizenz-Check erfolgreich durchgeführt (0 aktive Locks, 0 Privacy Leaks, 0 Klartext-Secrets,
.gitignoreschützt zuverlässig gegen Konfliktkopien und Locks). - Metadaten- & Badges-Synchronisation: Badges in
README.md,README_de.mdundllms.txtauf Prüfstand 2026-09-29 und 136 bestandene Tests synchronisiert; Vertragstests intests/test_metadata.pyaktualisiert und validiert. [G 2026-09-29]
- Multi-Resolution Windows Explorer ICOs: Vollwertige 7-Layer
.ico-Dateien (PDFtoPDFocr.ico,DesktopIcon.ico,icon.ico,ICO.ico,assets/PDFtoPDFocr.ico,assets/pdftopdfocr.ico,assets/DesktopIcon.ico,assets/icon.ico,assets/app_icon.ico) mit 16x16, 24x24, 32x32, 48x48, 64x64, 128x128 und 256x256 Pixeln bei 32bpp RGBA erzeugt bzw. gehärtet (schließt fehlende 24x24-Ebene inICO.icosowie fehlende Root- und Asset-Icons). - Master-PNGs & Favicon-Parität: Hochauflösende 1024x1024 RGBA Master-Icons (
PDFtoPDFocr.png,DesktopIcon.png,icon.png,assets/PDFtoPDFocr.png,assets/DesktopIcon.png,assets/icon.png) verankert sowie Multi-Layerfavicon.ico(16, 24, 32, 48, 64 px) und Web-Faviconsfavicon.pngin Root,assets/undmobile_icons/bereitgestellt. - PWA & Mobile Icon Suite (
mobile_icons/): Vollständiges mobiles Icon-Paket inklusive W3Cmanifest.json, Standard-Icons (icon-192.png,icon-512.png), maskierbaren Varianten (icon-maskable-192.png,icon-maskable-512.png) mit 80%-Safe-Zone auf Dark-Slate-Hintergrund (#0f172a), Apple-Touch-Icons (180x180 px), Favicons und Unterordnericons/angelegt. - Microsoft Store & Windows Kacheln (
store_assets/): Vollständige Store-Kachel-Suite (icon_44x44.png,Square44x44Logo.png,icon_50x50.png,Square50x50Logo.png,StoreLogo.png,icon_150x150.png,Square150x150Logo.png,icon_310x150.png,Wide310x150Logo.png,icon_310x310.png,Square310x310Logo.png) und Dokumentationstore_assets/README.md. - Laufzeit-Icon-Integration:
app_icon_loader.pymitload_app_icon()undget_app_icon()für robustes Multi-Pfad-Fallback implementiert; inPDFtoPDFocr.specgebündelt undload_app_icon-Alias inPDFtoPDFocr_2.pyverankert. - Automatisierte Vertragstests: Neue Testsuite
tests/test_assets_and_icons.pymit 5 Contract-Tests (Master-Icons, Multi-Layer ICOs, Assets-Parität, Mobile/PWA Manifest, Store-Kacheln und QIcon-Laufzeitloader) implementiert; Pytest-Gesamtsuite auf 136 Tests erweitert (136/136 passed, 100% grün). [G 2026-09-28]
- Technische Hygiene & CI-Workflow Härtung (Pfad A):
- CI-Workflow Timeout- & Concurrency-Härtung:
.github/workflows/tests.ymlund.github/workflows/source-platform-smoke.ymlmittimeout-minutes: 15,permissions: contents: readundconcurrency(Gruppe${{ github.workflow }}-${{ github.ref }},cancel-in-progress: true) gegen Endlosschleifen und Runner-Verschwendung gehärtet. - Automatisierte Issue- & PR-Lebenszyklus-Steuerung:
.github/workflows/stale.ymlmitactions/stale@v9,timeout-minutes: 10, täglichem Cron (01:30 UTC) und Least-Privilege-Berechtigungen (issues: write,pull-requests: write) bereitgestellt. - Multi-Host Cloud-Sync- & Kanonisches Lock-System Schutz (.gitignore): Umfassend gegen OneDrive-Konfliktkopien (
* (kopie)*,* (copy)*,*conflicted copy*,*-WORKSTATION*,*-ASUS*,*-LAPTOP*), kanonische Multi-Agent-Sperren (LOCK,LOCK.*,LOCK*.txt,LOCK.permissions.json,*.lock,uv.lock,!package-lock.json) und Test-Artefakte (.coverage*,htmlcov/,*.orig,*.rej) gehärtet. - PEP 621 Standard-Metadaten & Pytest-Härtung (
pyproject.toml):license-files = ["LICENSE", "THIRD_PARTY_LICENSES.md"]ergänzt;minversion = "7.0"und synchronisiertenorecursedirsverankert. - Versionsharmonisierung auf 1.1.4: Einheitliche Versionierung über
pyproject.toml(1.1.4),PDFtoPDFocr_2.py(1.1.4),store_package.json(1.1.4.0),WINDOWS_STORE_PREP.md,SECURITY.md,build_exe.bat,MARKETING-LOG.txt,README.md,README_de.mdundllms.txt. - Automatisierte Vertragstest-Erweiterung (
tests/test_metadata.py): 4 neue Contract-Tests für CI-Timeouts, Stale-Workflow, Gitignore-Multi-Host-Schutz und Manifest-Parität hinzugefügt (Gesamtsuite auf 121 Tests erweitert, 121/121 passed, 100% grün). [G 2026-09-20]
- CI-Workflow Timeout- & Concurrency-Härtung:
- Doppelklick auf eine PDF öffnete die App nicht. Zwei unabhängige Ursachen, beide behoben:
- Das Store-Paket deklarierte keine Dateizuordnung (
uap:FileTypeAssociationfehlte imAppxManifest.xml), die App erschien deshalb nicht einmal unter „Öffnen mit". - Die Anwendung wertete übergebene Dateipfade nicht aus. Windows reicht den Pfad als Kommandozeilenargument durch — ohne Auswertung startet die App zwar, zeigt die Datei aber nicht an. Der Manifest-Eintrag allein hätte also nicht genügt.
- Das Store-Paket deklarierte keine Dateizuordnung (
- Neu:
OCRConverterGUI.add_paths_from_arguments()nimmt beim Start übergebene Dateien und Ordner auf (Doppelklick, „Öffnen mit", Ablegen auf dem Programmsymbol). Nicht unterstützte Endungen und Duplikate filtert die bestehende Prüfung weiterhin heraus.
- Ausführungsalias
pdftopdfocr.exe(Start per Namen in der Konsole). - Sprachen
de-DEunden-USim Paket hinterlegt (languagesinstore_package.json). - 8 Tests in
tests/test_cli_file_arguments.py, darunter einer, der prüft, dass der Einstiegspunkt die Argumente auch tatsächlich durchreicht.
- Paketversion
1.0.4.0→1.0.5.0;MaxVersionTested10.0.19041.0→10.0.22621.0. - Manifest wird aus
store_package.jsonerzeugt (store-packager 2.2.0).
- Eingereicht am 2026-08-23, Submission
1152921505701721467, StatusCertification.
- 18-Punkte-Schnellnavigation mit reziproken HTML-Ankern:
README.mdundREADME_de.mdauf 18 standardisierte Abschnitte mit beidseitig auflösbaren HTML-Ankern (<a id="..."></a>) erweitert. - Dual Mermaid-Diagramme: Modernisiertes 5-Schichten-Systemarchitektur-Diagramm (
flowchart TD) und asynchroner Verarbeitungslebenszyklus (sequenceDiagrammitautonumberund 0 Semikolons). - Zielgruppen & SEO-Suchbegriffe: 4 detaillierte Nutzer-Personas (
[PERSONA-01]bis[PERSONA-04]) und zweisprachige High-Intent-Suchbegriffe für lokale OCR-Szenarien. - 10-Dimensionen-Vergleichsmatrix: Detaillierte Gegenüberstellung vs. 5 Alternativen (Adobe Acrobat Pro, ABBYY FineReader, OCRmyPDF CLI, Smallpdf / Cloud SaaS), gemappt auf die 10 Invarianten
INV-LOCAL-01bisINV-SLA-10. - Gesetzlicher Haftungsausschluss (§ 521 BGB): Schenkungsrechtlicher Haftungsausschluss für unentgeltliche Open-Source-Software in
README.mdundREADME_de.mdverankert. - Level 1 SBOM & Lizenz-Governance (
THIRD_PARTY_LICENSES.md): Invariant Cross-Reference Matrix Tabelle, unprivilegierte RunAsInvoker-Zertifizierung und Zero-Copyleft-GPL-Isolationsnachweis (Poppler Subprozess-Grenze, PySide6 LGPL-3.0 dynamische Verlinkung). - Lokales Marketing-Log (
MARKETING-LOG.txt): Stand 2026-09-21 für Pfad B Turnus mit vollständiger Audit-Dokumentation. - Metadaten- & Vertragstests (
tests/test_metadata.py): Testsuite erweitert zur Absicherung der 18 Navigationsanker, HTML-Anker-Tags, Mermaid-Diagramme, Vergleichsmatrix, Personas und BGB-Hinweise (100% grün). [G 2026-09-21]
- Pfad B Marketing, Discoverability, Visual Architecture & License Governance (
MARKETING-LOG.txt,THIRD_PARTY_LICENSES.md,README.md,README_de.md,pyproject.toml,llms.txt,tests/test_metadata.py):- Reziproke 16-Punkte-Schnellnavigation: Vollständige Anker-Parität zwischen
README.mdundREADME_de.mdüber alle 16 Kapitel inkl. dedizierter Abschnitte für Zielgruppen (#target-personas--discoverability/#zielgruppen--auffindbarkeit) und Drittanbieter-Lizenzen (#third-party-licenses--transparency/#drittanbieter-lizenzen--transparenz). - Lokales Marketing- & Discoverability-Log (
MARKETING-LOG.txt): 4 Kern-Zielgruppenprofile (Rechtswesen/Compliance, Archivare/Forscher, Datenschutzbewusste Wissensarbeiter, Pipeline-Integratoren), zweisprachige High-Intent-Keyword-Matrix, 5-Wege-Wettbewerbsmatrix über 10 Dimensionen und Meilenstein-Chronik. - Modernisiertes Lizenz-Audit (
THIRD_PARTY_LICENSES.md): Vollständiges Software-Inventar aller direkten und transitiven Laufzeitbibliotheken, gebündelter Werkzeuge (Poppler,Tesseract OCR,Leptonica), Entwicklungs-Tools, LGPL-3.0 dynamischer Verlinkung, sauberer Subprozess-Grenzen und tabellarischer Nachweis der 10 Governance- & Laufzeit-Invarianten (INV-LOCAL-01bisINV-SLA-10). - PEP 621 Metadaten-Erweiterung (
pyproject.toml):[project.urls]um standardisierte Endpunkte für"Third-Party Licenses","Marketing Log"und"LLM Ready"ergänzt. - Sicherheitsrichtlinie & SLA (
SECURITY.md): Sicherheitskontakt umsecurity@open-bricks.orgerweitert und verbindliche SLAs verankert (48h Erstantwort, 5 Werktage qualifizierte Triage). - Vertragstest-Erweiterung (
tests/test_metadata.py): 4 neue automatisierte Vertragstests für Anker-Parität, Schnellnavigation,MARKETING-LOG.txt,THIRD_PARTY_LICENSES.mdund Metadaten-URLs (Gesamtsuite auf 110 Tests erweitert, 110/110 passed, 100% grün). [G 2026-09-12]
- Reziproke 16-Punkte-Schnellnavigation: Vollständige Anker-Parität zwischen
- Bugsweep Pfad-Normalisierung & Duplikaterkennung (
PDFListWidget.add_file):add_filenormalisiert Dateipfade defensiv viaos.path.abspathundos.path.normcase.- Verhindert Duplikate bei abweichenden Pfadtrennern (
/vs.\, z. B. bei Drag-and-Drop /QFileDialogvs. CLI-Startargumenten), relativen Pfaden und Windows-Dateisystem-Case.
- Software UX & Accessibility: Kontextmenü, Doppelklick-Aktion & Status-Guidance (
PDFtoPDFocr_2.py,translations.json,tests/test_ui_accessibility.py):- Barrierefreies Kontextmenü (
_create_list_context_menu,_show_list_context_menu): Rechtsklick auf Listeneinträge öffnet ein vollständiges Aktionsmenü mit "Datei öffnen", "Im Ordner anzeigen", "Markierte mergen" (Strg+M) und "Löschen" (Entf). - Direkte Doppelklick-Aktion (
_on_item_double_clicked): Doppelklick auf einen Listeneintrag öffnet unmittelbar das erzeugte OCR-Ergebnis (_ocred.pdf) oder die Quelldatei im Standardbetrachter. - Sofortige Status-Orientierung (
status_label): Initialer App-Start und Listen-Bereinigung (on_refresh) zeigen direkt verständliche Benutzerhinweise ("Bereit. Dateien hierher ziehen oder 'Datei hinzufügen' wählen.") in allen 6 unterstützten Sprachen. - Lokalisierungserweiterung (
translations.json): Neue Schlüsselstatus_ready,action_open_fileundaction_open_folderin allen 6 Sprachen (DE, EN, ES, ZH, JA, RU) hinterlegt. - Erweiterte Testabdeckung (
tests/test_ui_accessibility.py): 3 neue automatisierte A11y-Tests für Status-Guidance, Doppelklick-Verhalten und Kontextmenü-Aktionen (Gesamtsuite auf 103 Tests erweitert, 103/103 passed, 100% grün). [G 2026-09-10]
- Barrierefreies Kontextmenü (
- Software Internationalisierung & 6-Sprachen-Standard (P-006 / Tier-2-Mehrsprachigkeit):
- Vollständiger 6-Sprachen-Katalog (
translations.json): Sämtliche 61 Lokalisierungsschlüssel für Benutzeroberfläche, Tooltips, Fehlermeldungen, Dialoge und Barrierefreiheitsattribute (A11y) vollständig und authentisch für Deutsch (de), Englisch (en), Spanisch (es), vereinfachtes Chinesisch (zh), Japanisch (ja) und Russisch (ru) übersetzt (100% Vollständigkeit, 0 fehlende Schlüssel). - 4-Stufen-Fallback-Kette & Translator-Modul (
translator.py):TranslationManagermit robuster Kaskade (aktive Sprache -> Englisch -> Deutsch -> Schlüsselname) und Platzhalter-Formatierung ({filename},{error},{lang},{status},{folder}) implementiert; automatische Systemsprachenerkennung viadetect_system_language(). - Übersetzungs-Auditor & CI-Gate (
manage_translations.py): Standalone-Verwaltungswerkzeug und statischer Scanner zur Erkennung allertr()-Aufrufe, Prüfung auf Vollständigkeit, Erkennung von Platzhalterinkonsistenzen und--check-Gate für automatisierte Builds. - Erweiterter UI-Sprachauswahlschalter (
PDFtoPDFocr_2.py):ui_lang_combobietet alle 6 Sprachen (Deutsch,English,Español,简体中文,日本語,Русский) an; dynamischeretranslate_ui()-Aktualisierung stellt Fenster, Schaltflächen, Listen, Statusmeldungen und Barrierefreiheitsmetadaten live ohne Neustart um. - Automatisierte I18N-Testsuite (
tests/test_i18n.py): 9 neue Vertragstests für 6-Sprachen-Vollständigkeit, Platzhalter-Parität, Fallback-Kette, Auditor-Gate, UI-Combobox, Unicode/UTF-8-Zeichensatzintegrität (Umlaute, Tilden, Hanzi, Kanji/Kana, Kyrillisch) und Systemsprachenerkennung (Gesamtsuite auf 91 Tests erweitert, 91/91 passed, 100% grün). [G 2026-08-24]
- Vollständiger 6-Sprachen-Katalog (
- Software UX & Accessibility (A11y) Review (Pfad A/Governance):
- Screenreader- und Barrierefreiheitsmetadaten (
PDFtoPDFocr_2.py,translations.json): VollständigeAccessibleName- undAccessibleDescription-Attribute für alle interaktiven Widgets (ui_lang_combo,lang_combo,list_widget,btn_add_file,btn_start,btn_export,btn_refresh,btn_delete,btn_choose_export_folder,btn_reset_export_folder,status_label,export_folder_label) implementiert. - Umfassendes Tooltip-System: Kontextsensitive, informative Tooltips für alle Bedienelemente in Deutsch und Englisch mit Tastaturkürzel-Hinweisen.
- Tastatur-Ergonomie & Shortcuts: Globale Tastaturkürzel für Primäraktionen (
Strg+Ofür Dateiauswahl,Strg+Eingabetastefür OCR-Start,Strg+Efür Job-Export,F5für Liste leeren,Strg+Umschalt+Ofür Zielordnerauswahl); Unterstützung fürEntfundRückschritt(Backspace) in der Dateiliste (PDFListWidget). - Kontraststarke Statusrückmeldung: WCAG AA konforme Farbgebung (
#0b6e4f/#b45309) für Erfolgs- und Fehleranzeigen; dateiindividuelle Hover-Tooltips mit dynamischem Verarbeitungsstatus. - Dynamische Lokalisierung:
retranslate_ui()aktualisiert bei Sprachumschaltung (DE <-> EN) alle Texte, barrierefreien Beschreibungen und Tooltips live und lückenlos. - Automatisierte Testsuite (
tests/test_ui_accessibility.py): 6 neue Regressionstests für A11y-Namen, Tooltips, Tastenkombinationen, Backspace/Del-Handling, dynamische Umschaltung und WCAG-Farbkontraste hinzugefügt (Gesamtsuite auf 74 Tests erweitert, 74/74 passed). [G 2026-08-23]
- Screenreader- und Barrierefreiheitsmetadaten (
- Icon-, EXE- & START.bat Health & Build-Standardisierung:
- Startdatei (
START.bat): Vollständig modernisiert mit UTF-8-Codepage (chcp 65001), automatischer Priorisierung vorkompilierter Binaries (dist\PDFtoPDFocr\PDFtoPDFocr.exe->dist\PDFtoPDFocr.exe->PDFtoPDFocr.exe) und transparentem Python-Interpreter-Fallback (py -3/python PDFtoPDFocr_2.py). - PyInstaller-Spec (
PDFtoPDFocr.spec): Aufupx=Falseumgestellt (Vermeidung von UPX-Antivirus-Fehlalarmen und Verlangsamung beim Kaltstart), Icon-Dateien (PDFtoPDFocr.ico,ICO.ico) indatasgebündelt und 8 nicht benötigte schwere Pakete (altair,cv2,pandas,plotly,pyarrow,scipy,soundfile,sympy) viabuild_exclude_scanner.pyzuverlässig ausgeschlossen. - Build & Verifikation:
build_exe.batmit lokalem Build-Root ausgeführt; Binärdateidist\PDFtoPDFocr\PDFtoPDFocr.exe(3.83 MB, SHA25638519389CCF64330A67578E4B7DC568BC10B410317979EB1BC3FDA177D5FA833) erfolgreich erzeugt; Direktstart undSTART.bat-Start jeweils mit laufendem Prozess verifiziert. - Dokumentation (
ICON_EXE_VERKNUEPFUNG.md): Umfassende deutschsprachige Anleitung zur Verknüpfung von.ico-Assets mit.exe-Binaries über PyInstaller, PE-Ressourcen-Header, Qt/PySide6-Laufzeit-Handler, Windows-Desktopverknüpfungen und Icon-Cache-Reset erstellt. [G 2026-08-21]
- Startdatei (
- Bugsweep BS-4: Bild-Normalisierung mit Alpha-Compositing & EXIF-Orientierung (
PDFtoPDFocr_2.py) — Bilder mit Transparenz/Alpha-Kanal (RGBA,LA, transientesP) wurden bei der direkten Pillow-Konvertierung nach RGB mit einem soliden schwarzen Hintergrund gefüllt, was schwarzen Text auf transparentem Grund vollständig unlesbar machte. Die neue Funktionnormalize_image_for_ocr()führt ein sauberes Alpha-Compositing auf weißem Grund durch, korrigiert die EXIF-Orientierung bei Smartphone- und Scanner-Fotos viaImageOps.exif_transpose()und verhindert OCR-Erkennungsfehler auf transparenten Dokumenten. - Bugsweep BS-5: Tesseract-Download- & Dateigrößen-Validierung (
PDFtoPDFocr_2.py) —ensure_tesseract()behandelt 0-Byte-Stubs und unvollständige.traineddata-Dateien durch explizite Dateigrößenvalidierung (os.path.getsize(target) == 0) und lädt beschädigte oder leere Sprachpakete automatisch neu herunter. build_exe.bat: ungültiges--specpath-Flag entfernt — PyInstaller lehnt diese Option ab, sobald ein bestehendes.specübergeben wird ("option(s) not allowed: --specpath"); der Build brach dadurch sofort ab. Fund + Fix im Rahmen der Windows-Store-Welle-1-Vorbereitung (T-20260816-296785081). Frischer Build verifiziert: EXE startet ohne Absturz, Pytest 53/1 grün.
- Software Security & License Audit (Pfad A/Governance):
- Abhängigkeits-Härtung (Vulnerability Remediation): Mindestversionsschwellen in
pyproject.toml,requirements.txtundrequirements-dev.txtgehärtet (requests>=2.33.1zur Behebung von CVE-2024-35195 / GHSA-9wx4-h78v-vm56,Pillow>=10.4.0zur Behebung von CVE-2024-28219, CVE-2023-50447, CVE-2023-4863,pikepdf>=8.15.1,pdf2image>=1.17.0,pytesseract>=0.3.13,pytest>=9.1.1zur Behebung von CVE-2025-7117 / GHSA-6w46-j5rx-g56g). - Drittanbieter-Lizenzinventar (
THIRD_PARTY_LICENSES.txt): Stand auf2026-08-21aktualisiert; transitive Runtime-Bibliotheken (urllib3MIT,certifiMPL-2.0,charset-normalizerMIT,idnaBSD-3-Clause,packagingApache-2.0 / BSD-2-Clause) lückenlos dokumentiert. - Sicherheitskontakt & Zero-Egress: Sicherheitskontakt in
SECURITY.mdzweisprachig umsupport@lukasgeiger.comergänzt. - .gitignore-Härtung: Synchronisations-Konfliktmuster (
*-WORKSTATION-LG*,*-ASUS-GEI*,*.conflict,*.sync-conflict-*) und Lock-Dateien (LOCK*.txt) verbindlich ignoriert. - Automatisierte Vertrags-Testsuite:
tests/test_security_license_contract.pymit 5 Tests implementiert (Mindestversionsschwellen, Lizenzinventar, Ausschluss hartcodierter Nutzerpfade, Plaintext-Secret-Scanning, Gitignore-Regeln). - Testsuite & Parität: Testsuite von 63 auf 68 Tests erweitert (68/68 passed, 100% grün). [G 2026-08-21]
- Abhängigkeits-Härtung (Vulnerability Remediation): Mindestversionsschwellen in
- Discoverability, README-Design & Marketing (Pfad B): Badges in
README.md&README_de.mdum Testsuite (68 Passed, 100% grün), Version (1.1.3), Python (>=3.10), UI-Engine (PySide6 | Qt), Plattform (Windows 10/11 | Linux | macOS), Datenschutz (100% Offline / Zero-Egress), Sicherheit (Local-First),doc-bricksEcosystem,open-bricksUmbrella undllms.txtDiscovery synchronisiert. - Interaktive Mermaid-Diagramme: (1) Systemarchitektur- und Komponenten-Workflow-Diagramm (Dokumenten-Input -> Poppler-Rasterizer -> Tesseract-Engine -> pikepdf-Assembler -> Durchsuchbare Ausgabe & Job-Manifest); (2) Lokaler Datenfluss- & Datenschutz-Isolations-Sequenzdiagramm mit 100% Offline- und Zero-Egress-Garantien in beiden Sprachfassungen integriert.
- Zweisprachige Sicherheitsrichtlinie (
SECURITY.md): Vollständige deutsch-englische Sicherheitsdokumentation mit Local-First & Zero-Egress Invarianten, kontrolliertem Netzwerkzugriff (ausschließlich bedarfsgerechte Tesseract-Sprachpakete), Originaldateischutz (verlustfreie Ausgabe via_ocred.pdf), Manifest-Isolation, Non-Elevation (Standard-Benutzerkontext) und privater Schwachstellenmeldung (security@ellmos.ai& GitHub Advisories) implementiert. - Geschwisterwerkzeuge-Matrix: Umfassende Ökosystem-Tabelle über
doc-bricks(DokuReader, MediaBrain, UniversalDocsGrabber, UniversalInvoiceMail, UniversalMailCleaner, CleanMarkdown, LitZentrum, MailProcessor),file-bricks(ProFiler, ExplorerPro),dev-bricks(DevCenter, CodeBox) undopen-bricksin beiden README-Versionen eingebunden. - Metadaten- & Paritätstestsuite: Neue automatisierte Testsuite
tests/test_metadata.pyfür Manifest-, Badges-, Links-, Sicherheits- undllms.txt-Parität implementiert (6/6 Tests passed, Gesamtsuite 60/60 passed). - llms.txt & Schnelleinstieg:
llms.txtLast-checked Zeitstempel auf2026-08-21und 60 Tests aktualisiert; Schnelleinstieg-Tabelle inREADME.mdundREADME_de.mdergänzt. [G 2026-08-21] - Windows-Store-Screenshot-Generator (
scripts/generate_store_screenshots.py): erzeugt die 4 inreleases/windowsstore/SCREENSHOT_PLAN.mdgeforderten Screenshots reproduzierbar aus neutralen Demo-Daten, mit demselben Tofu-/Font-Rendering-Selbsttest wie in ProSync/PromptBoard/ Klangpult (bricht ab statt ein defektes Kästchen-Screenshot-Set stillschweigend zu erzeugen).
- Technische Hygiene & Maintenance Check (Pfad A):
[tool.ruff]und[tool.ruff.lint]Konfiguration inpyproject.tomlintegriert (target-version = "py310",line-length = 120,E501/E402/E722/E741/F841ignore,ruff check100% sauber),llms.txtLast-checked Zeitstempel auf2026-08-16aktualisiert, Testsuite (54/54 Pytest Tests passed) verifiziert. [G 2026-08-16]
- App-Icon-Modernisierung & Asset-Set: Master-App-Icon (512x512 PNG, RGB/RGBA) mit modernem PDF/OCR-Scanner-Motiv generiert und unter
assets/icon.pngsowiePDFtoPDFocr.pngabgelegt. Multi-Resolution Windows-ICO-Dateien (PDFtoPDFocr.ico,assets/app_icon.ico,assets/icon.ico) mit allen Standardauflösungen (256x256, 128x128, 64x64, 48x48, 32x32, 24x24, 16x16) undassets/favicon.icoerzeugt. Standard-Kachel- und Store-Icons unterassets/icons/(icon_44x44.png,icon_50x50.png,icon_150x150.png,icon_310x150.png,icon_310x310.png) undstore_assets/synchronisiert. - Runtime-Icon-Anbindung:
get_project_root(),get_app_icon_path()undget_app_icon()inPDFtoPDFocr_2.pyimplementiert;OCRConverterGUIundQApplicationbinden das Anwendungs-Icon verlässlich ein. - PyInstaller-Spec & Build:
PDFtoPDFocr.specbindetassets/überdatasein und wählt prioritärPDFtoPDFocr.ico;build_exe.batauf.SOFTWARE-Standard mit isoliertem Build-RootC:\_Local_DEV\BUILDS\PDFtoPDFocr\1.1.3modernisiert. - Asset-Testsuite: Neue Testsuite
tests/test_app_assets.pymit 5 Tests für Icon-Integrität, Formate, Auflösungen und GUI-Laufzeitbindung implementiert (54/54 passed, 100% grün).
- Bug-Regression BS-3 (pikepdf Lazy Page Lifecycle in
merge_ocr_outputs): Inmerge_ocr_outputswurden geöffnete Quell-PDF-Instanzen (src_pdf) bisher innerhalb der Schleife vormerged.save()geschlossen. DapikepdfSeiteninhalte lazy referenziert, führte das vorzeitige Schließen zu potenziellen Stream- und Deskriptor-Fehlern beim Speichern der Sammel-PDF. Geöffnete Quell-PDFs werden nun bis nach dem Speichern offengehalten und sauber im äußerenfinally-Block geschlossen. [G 2026-08-14] - Testabdeckung: Regressionstests
test_bs3_merge_ocr_outputs_sources_kept_open_until_saveundtest_bs3_merge_ocr_outputs_functional_executionintests/test_bug_regressions.pyergänzt; Pytest-Suite auf 54/54 passed aktualisiert. [G 2026-08-14]
- Technische Hygiene & Maintenance Check (Pfad A):
pythonpath = ["."]inpyproject.toml([tool.pytest.ini_options]) undpytest.inifür Standalone-Testausführung ergänzt, Paketversion auf1.1.2synchronisiert,llms.txtLast-checked Zeitstempel auf2026-08-04aktualisiert. [G 2026-08-04]
- Discoverability & Marketing Refresh (Pfad B):
llms.txtIndex-Header aufLast-checked: 2026-07-29und 47 verifizierte Pytest-Tests aktualisiert, Pytest-Badges inREADME.mdundREADME_de.mdauf 47 passed synchronisiert, Paketversion inpyproject.tomlauf1.1.1angeglichen. [G 2026-07-29]
- TASKPLAN 1376 — Git-Konsolidierung: Die durch Commit
98bd6b8versehentlich wieder eingeführte Verzeichnisstrukturweb_companion/erneut entfernt und damit den dokumentierten E04-Entscheid für eine Desktop-only-Anwendung wiederhergestellt. - TASKPLAN 1377 — Plattform-Paket-Gate: Den vorhandenen
skipif-Schutz für die bewusst nicht versionierteAUFGABEN.txtbestätigt; Zieltest (2 passed), Gesamtsuite (47 passed) und Source-Platform-Smoke sind grün.
- Discoverability, SEO & README-Design Audit (Pfad B): Shields.io Status-Badges (Python 3.10+, License MIT, Pytest 51 passed, LLM-Ready, Ecosystem doc-bricks, Umbrella open-bricks), GFM-Hinweisboxen (
> [!NOTE]für KI/LLM-Kontext,> [!TIP]für Datenschutz & lokale Offline-Verarbeitung), Sprachwechsler-Navigation ([English](README.md) | [Deutsch](README_de.md)) und Mermaid-Systemarchitektur- & Datenflussdiagramm inREADME.mdundREADME_de.mdeingebunden. - PEP 621 Standardisierung:
pyproject.tomlmit vollständigen Metadaten, PyPI-Classifiers, Build-System (setuptools) und[tool.pytest.ini_options]Test-Konfiguration erstellt. - llms.txt Update: Index-Header auf
Last-checked: 2026-07-27und 52 verifizierte Pytest-Tests aktualisiert.
- PEP 621
pyproject.toml: Standardisierte Paketkonfiguration mit Metadaten (Name, Version, Lizenz, Keywords, URLs), Abhängigkeiten und Pytest-Pfadkonfiguration (pythonpath = ".") angelegt. - Shields.io Badges: Python-Version, Pytest-Status (47 passed), MIT-Lizenz, Windows 10/11 Plattform, Tesseract 5 OCR Engine und LLM-Ready Badges in
README.mdundREADME_de.mdintegriert. - KI/LLM-Integrationshinweise & Architekturdiagramm:
> [!NOTE]Callout für KI-Agenten und offline Automatisierungsworkflows sowie Mermaid Architektur- & Datenfluss-Diagramm inREADME.mdundREADME_de.mdergänzt.
llms.txtHeader aufLast-checked: 2026-07-25und 47 passing pytest unit/integration tests aktualisiert.
Welle-1-Usertest-Feature-Paket (U1-U7): Bild-Import, Stapeln/Mergen und Paket-Hygiene für den Windows-Store-Anlauf.
- U1 — Bild-Import: JPG/PNG/TIFF können jetzt direkt (ohne PDF-Umweg) per OCR
in ein durchsuchbares PDF umgewandelt werden. Mehrseitige TIFFs erzeugen eine
Seite pro Frame. Keine neuen Abhängigkeiten (Pillow +
pytesseract.image_to_pdf_or_hocrreichen), kein PyMuPDF, keine AGPL-Komponenten. - U2 — Stapeln/Mergen: Kontextmenü „Markierte mergen" auf der Dateiliste fasst ausgewählte, bereits OCR-verarbeitete Ergebnisse zu einer Sammel-PDF zusammen; Drag-Umsortieren innerhalb der Liste bestimmt die Stapel-/Seitenreihenfolge.
- U3 — Merge-Ablage: Beim Merge wandern die einzelnen OCR-Ergebnis-PDFs in einen Unterordner „Einzeldateien", die Sammel-PDF landet auf Root-Ebene des Exportordners (Default: Ordner der Quelldatei).
- U4 — Exportordner-Einstellung: Konfigurierbarer Exportordner mit
Zurücksetzen-Option; Fallback ist immer der Ordner der jeweiligen Quelldatei.
Persistenz teilt sich die
config.jsonmit der U6-Sprachauswahl (kein QSettings/Registry, bleibt Store-Sandboxing-konform). - U5 — Ordner-Import als Auto-Merge: Wird ein ganzer Ordner hineingezogen, werden alle enthaltenen Bilder/PDFs als ein Batch getaggt; sobald alle Dateien des Batches verarbeitet sind, entsteht automatisch eine Sammel-PDF plus Unterordner mit den Einzeldateien.
- U7 — Paket-Hygiene:
build_release.collect_tesseract_portable_files()schließt Tesseract-Trainingstools (lstmtraining,cntraining,text2image, …) undtesseract-uninstall.exevon der Paketierung aus (Build-/Paketkonfiguration betroffen, Quellordner unangetastet); reduziert unnötige WACK-relevante Executables im Store-Paket. Leptonica (Tesseract-Bildverarbeitungs-Unterbau,libleptonica-6.dll) hat jetzt einen eigenen Eintrag inTHIRD_PARTY_LICENSES.txt(per Recherche verifiziert: zlib-artige, GPL-kompatible Eigenlizenz). - Welle-1 U1 — sichtbarer DE/EN-Anzeigesprachschalter: Neue Combobox „Anzeigesprache / Display language" (Deutsch/English) oben im Fenster, klar getrennt von der bestehenden OCR-Sprachauswahl. Die Oberfläche stellt sofort um (
retranslate_ui), die Auswahl wird pro Benutzer in%APPDATA%\PDFtoPDFocr\config.json(XDG-Fallback) persistiert und beim Start geladen. Das vorhandenetr()/translations.json-System ist damit erstmals über ein sichtbares Bedienelement erreichbar. Regressionstests:tests/test_language_switch.py. Job-Exportin der Desktop-App ergänzt; die App schreibt jetztpdftopdfocr-job-v1.jsonmit OCR-Sprache, Datei-Metadaten, Status und Ergebnis-Hinweisen ohne PDF-Inhalte.llms.txtals maschinenlesbaren Projektkontext für Repo-Checks und LLM-Crawler ergänzt.- Regressionstests für Export-Schema, UTF-8 ohne BOM, fehlende Dateien, relative Pfade und leeren Projektstand ergänzt.
web_companion/als statischen Offline-Prototyp ergänzt: Import vonpdftopdfocr-job-v1.json, Demo-Modus, Filteransicht, Browser-Entwurf aus lokalen Dateimetadaten, Service Worker und Node-Tests.- macOS/Linux source-platform smoke CI ergänzt:
source_platform_smoke.pytestet Source-Platform-Builds ohne Tesseract/Poppler-Binärdateien;.github/workflows/source-platform-smoke.ymlführt die Checks auf ubuntu-latest und macos-latest aus. MACOS_LINUX_PACKAGE_GATE.mdergänzt; das Gate hält fest, dass eigene macOS-/Linux-Pakete erst nach Windows-Store- und PWA-Stabilität oder belegter Nachfrage gestartet werden.
- README und Store-Listing präzisieren auswählbare OCR-Sprache statt automatischer Spracherkennung.
- Datenschutz-, Release- und Drittanbieter-Hinweise auf den Wartungscheck vom 2026-05-15 synchronisiert.
- Deutsche Endnutzertexte auf echte Umlaute geprüft und bereinigt.
- Portierungsstrategie ergänzt: Windows Store zuerst, Web/PWA-Companion mit
pdftopdfocr-job-v1.json, Android/iOS über PWA-Testpfad, macOS/Linux als Source-Smoke-Ziele. - Exportformat und Companion-Doku beschreiben jetzt den realen Browser-Prototyp statt nur eines Platzhalters.
- Portierungsplan auf den macOS-/Linux-Package-Gate synchronisiert; aktuelle Unterstützung bleibt Source-Smoke, keine DMG-/PKG-/AppImage-/Flatpak-/Snap-Linie.
web_companion/vollständig entfernt (kein belegter Usecase laut Audit 2026-07-23/24); die Desktop-App bleibt die primäre Plattform.
web_companion/(Web/PWA-Prototyp) inklusive Node-Tests -- siehe Begründung oben.
- pikepdf-Quell-PDFs (und ihre Temp-Dateien) werden jetzt erst NACH
out_pdf.save()geschlossen/aufgeräumt, nicht mehr davor -- verhinderte korrupte/fehlende OCR-Seiten bei lazy Page-Kopien. - OCR-Fehler landen im Logging statt in
print(); unter PyInstaller windowed (sys.stdout is None) hätteprint()den Worker-Thread zum Absturz gebracht (GUI blieb mit dauerhaft deaktiviertem Start-Button hängen). - Die Desktop-Dateiliste lässt sich jetzt auch per
Entf-Taste bereinigen; Dateiliste und Löschaktion exponieren dafür klaren Accessible Context, ohne die kompakte Oberfläche sichtbar zu vergrößern. - web_companion bugsweep (8 Bugs):
caches.matchohne{ignoreSearch: true}, fehlendesskipWaiting()undclients.claim()im Service Worker,escHtmlinrenderResults(entry.name,output.message) undbuildStatCards(ocr_language) fehlte, 4 Manifest-Icons (any+maskable 192/512 px) fehlten inmanifest.webmanifest,apple-touch-iconfehlte,exportCurrentState-Anchor wurde nicht ins DOM eingehängt. - Gleichnamige Quelldateien aus verschiedenen Ordnern kollidieren im Job-Export und Web-Companion nicht mehr;
outputs[].input_local_pathordnet Status und Ausgabepfade jetzt eindeutig dem jeweiligen Input zu. - BUG-W1: Service-Worker-
fetchfängt jetzt Netzwerkfehler ab und liefert eine 503-Offline-Antwort statt einer ungefangenen Exception; Cache-Version auf v3 gebumpt. - BUG-W2:
localStorage.setIteminpersistState()steht jetzt in try/catch, damitQuotaExceededError(z. B. Safari Private Browsing) den Aufrufer nicht crasht. tests/test_platform_package_gate.py: Der Synchronisationstest gegenAUFGABEN.txt(bewusst lokal/gitignored) wird jetzt perpytest.mark.skipifübersprungen, statt auf jedem Checkout ohne lokale Kopie fehlzuschlagen.
- Pytest-Abdeckung für portable Tesseract- und tessdata-Erkennung ergänzt.
- GitHub-Actions-Testworkflow für Python 3.10 bis 3.12 und
requirements-dev.txtergänzt.
- Tesseract wird beim Start bevorzugt aus
TESSERACT_CMD, dem portablen Runtime-Ordner oderPATHkonfiguriert. TESSDATA_PREFIXwird für gebündelte Sprachpakete gesetzt, damit portable Builds ohne globale Tesseract-Installation funktionieren.- Datenschutz-, Store- und Drittanbieter-Lizenzdateien an PySide6, optionale Sprachpaket-Downloads und den aktuellen EXE-Namen angepasst.
- Build-Script nutzt im isolierten venv konsequent
python -m pip, damit Pip-Upgrades und Paketinstallationen den richtigen Interpreter verwenden.
- README mit Screenshot,
requirements.txt-Installation und aktuellem Build-Workflow ergänzt .gitignorefür lokale Secrets, Test-Locks und Build-venv erweitert;PDFtoPDFocr.specbleibt als Build-Konfiguration trackbar- PyInstaller-Spec an vorhandenes Root-Icon
ICO.icoangepasst - Migration von PyQt5 (GPL) zu PySide6 (LGPL) für MIT-Lizenzkompatibilität
app.exec_()zuapp.exec()(PySide6 API)pyqtSignalzuSignal(PySide6 API)
- Katarakt-Funktionen entfernt (
get_katarakt_path,ensure_katarakt) -- nicht verwendeter Dead Code
- CODE_OF_CONDUCT.md, SECURITY.md, CONTRIBUTING.md (Community Health Files)
- CHANGELOG.md
- requirements.txt befüllt und .gitignore aktualisiert
- Bare-except-Blöcke durch spezifische Exception-Handler ersetzt
- Encoding-Probleme behoben
- Sicherheits- und Robustheitsverbesserungen
- Erstveröffentlichung / Initial release
- GUI zur OCR-Verarbeitung von PDF-Dateien
- Automatischer Download fehlender Tesseract-Sprachpakete
- Unterstützung für portables Tesseract und Poppler
- Mehrsprachige GUI (Deutsch/Englisch)