raw derive PDF: Gliederung mit Seite und Zeile im Kopf, Hinterlegungen, Durchstreichungen und abweichende Textfarben als Auszeichnung im Text, Bildseiten als CHECK (#225); 10.1.0-beta.1
CI / verify (push) Successful in 10m35s
CI / pwsh (push) Successful in 2m51s
Release / release (push) Successful in 38s
Release / wiki-mirror (push) Skipped

Files changed:
- CHANGES.md
- VERSION
- docs/reference/commands/raw-material-and-uploads.md
- raw/CONTRACT.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/commands/raw/derive.py
- tools/chemenu/filters/__init__.py
- tools/chemenu/filters/pdf.py
- tools/chemenu/filters/pdf_layout.py
- tools/chemenu/tests/binary_formats.py
- tools/chemenu/tests/test_raw_derive_binary.py
- tools/requirements.txt

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Code committed 2026-10-14 05:17:50 +02:00
1 parent f2f251ff90
commit a829560bf2
13 files changed
+860 -22

No files matched your search

+13
View File
@@ -391,6 +391,19 @@ the file and does not recalculate it. Text that is data is read by a script, not
eye; the overview is what tells the reader which file to open. The folder is part of the
derivation, accepted with it, and an existing one is never overwritten.
**A PDF's outline and markings are in the derivation.** The header of `derived.md` lists the
PDF's outline as `outline` entries - title, level, page and the line of that page's
`<!-- page N -->` marker in the file - so a reader finds a section without reading the whole
text. In the text, three markings carry what the page shows by form alone: a background fill is
`<mark data-farbe="…">…</mark>`, a strike-through is `~~…~~`, and text in a colour other than the
running text, without a link under it, is `*…*`. A marking records how the page looks, not what
it means: nothing in the tool decides that yellow is a deadline, and removing the markings gives
the same text as without them. The `markings` header field is the legend - each marking in use,
with its count and pages. No tag crosses a line or a page marker. A page whose text cannot be
matched to its layout gets no markings and a WARN; a PDF with images the text does not hold gets
a CHECK naming the pages, because the tool has no OCR. A PDF without outline or markings is
derived as before. Reading the layout needs `pdfminer.six` beside `pypdf`.
**The original stays.** The derivation is the tool's reading of it, never the source: with the
original kept, a claim in `kb/` can still be checked against what the document said when a
derivation dropped something, and a later version of the tool can derive it better. Both go into