--keep-lines für Gedichtbände, OCR-Neuerkennung repariert, OCR-Rauschen entfernen
- --ocr always / schiefe OCR-Ebenen: alte unsichtbare Textebene vor der
OCR entfernen (nur in der Kopie im Speicher); vorher blieb der alte
Text erhalten bzw. stand doppelt da ("bliht" statt "blüht")
- --keep-lines: jede PDF-Zeile bleibt eine Zeile, Strophen als Absätze,
Einrückungen bleiben, nichts wird zusammengefügt (auch keine Trennung)
- OCR-Text selbst erkennen (unsichtbar, wie pymupdf4llm 1.28 intern);
Buchkante "|" entfernen, Rauschzeilen und Fetzen neben dem Textbereich
verwerfen, Zeilen mit verschiedenen Grundlinien trennen, Überschriften
ohne Buchstaben/Ziffern verwerfen
- Fraktur: frk+deu dokumentiert, Grenzen in TODO
- Tests: Scan mit falscher OCR-Ebene, Gedicht in schmaler Spalte,
OCR-Rauschen; README, Bedienungsanleitung, TODO
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1ba5b5005f
commit
3e5195efc2
1 changed files with 265 additions and 13 deletions
|
|
@ -81,6 +81,22 @@ def test_existing_ocr_layer_is_reused(pdfs, tmp_path, digital_md):
|
|||
assert ratio >= 0.9, ratio
|
||||
|
||||
|
||||
@needs_tesseract
|
||||
def test_ocr_always_replaces_bad_ocr_layer(pdfs, tmp_path, digital_md):
|
||||
out = tmp_path / "bad_ocr.md"
|
||||
run(pdfs["bad_ocr"], out, "--ocr", "always")
|
||||
md = out.read_text(encoding="utf-8")
|
||||
assert "Falscher" not in md # alte Ebene verworfen, nicht verdoppelt
|
||||
ratio = difflib.SequenceMatcher(None, words(digital_md), words(md), autojunk=False).ratio()
|
||||
assert ratio >= 0.9, ratio
|
||||
|
||||
|
||||
def test_auto_keeps_existing_ocr_layer(pdfs, tmp_path):
|
||||
out = tmp_path / "bad_ocr_auto.md"
|
||||
run(pdfs["bad_ocr"], out)
|
||||
assert "Falscher Text" in out.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
@needs_tesseract
|
||||
def test_mixed_keeps_page_order(pdfs, tmp_path):
|
||||
out = tmp_path / "mixed.md"
|
||||
|
|
|
|||
Loading…
Reference in a new issue