CommunityBildgithub.com

jisui

Jisui (自炊) Verarbeitung von gescannten Seitenbildern zu sauberen ZIP, CBZ oder PDF – mit Entzerrung, Randminimierung, B&W-Binarisierung, OCR, PDF-Lesezeichen und Metadatenbearbeitung.

Was ist jisui?

Diese Fähigkeit (Skill) wandelt einen Ordner mit gescannten Seitenbildern (z. B. von einem Scansnap oder anderen Scannern) in ein gepflegtes ZIP, CBZ oder PDF um. Dabei führt sie eine präzise Entzerrung (Rotation und Scherung) durch, minimiert die Ränder auf einheitliche 2 mm, binarisiert Text schwarz-weiß, während Bilder in Graustufen bleiben, und kann eine OCR-Textschicht (ocrmypdf + Apple OCR) sowie PDF-Lesezeichen aus dem Inhaltsverzeichnis hinzufügen. Sie unterstützt die Verarbeitung von Umschlägen, Rückseiten und Schutzumschlägen (einschließlich Einbinden, Weglassen oder separatem Speichern) und erlaubt das Bearbeiten von Titel- und Autor-Metadaten ohne Neukompression. Der Skill ist für jede Art von gescannten Dokumenten gedacht – Bücher, Zeitschriften, Handbücher, Notizen – und wird typischerweise auf der Kommandozeile über das Skript `scripts/jisui.py` ausgeführt, nachdem der Benutzer in einem interaktiven Schritt die gewünschten Optionen bestätigt hat.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/0stellensatz/skill-jisui/tree/HEAD/skills/jisui

Installed? Explore more Bild skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Jisui (自炊) Verarbeitung

Regeln für gescannte Bilder → ZIP / CBZ / PDF. Gilt nicht nur für Bücher, sondern für alles Gescannte (Zeitschriften, Dokumente, Notizen usw.). Dieser Skill entscheidet nicht über den Namen oder Speicherort der Ausgabedatei. Folge dem Aufrufer (der CLAUDE.md des Projekts oder den Anweisungen des Benutzers); falls keines beides festlegt, frage den Benutzer.

Gegebene Pfade

Argumente: $ARGUMENTS

Lies zuerst die angegebenen Pfade (Ordner mit Scans, Bilddateien oder PDFs); falls keine angegeben wurden, verwende das aktuelle Verzeichnis (.) – es sei denn, die Anfrage selbst nennt die Scans. Liste dann rekursiv alle enthaltenen Dateien auf (Unterordner, Dateinamen, Erweiterungen, Anzahl, Bildabmessungen/DPI einiger Dateien) und betrachte ein paar Bilder (erstes, letztes und einige dazwischen). Leite daraus die Struktur ab – z. B. ein Band pro Ordner oder mehrere Bände in einem Ordner, welche Dateien wie das Cover / die Rückseite / der Schutzumschlag / die Seiten des Textkörpers aussehen, Aufteilung in ungerade/gerade Seiten, Duplikate oder ungewollte Dateien – und schlage einen konkreten Jisui-Plan vor (Bände, Seitenreihenfolge, Cover-/Rückseiten-/Umschlagquellen, vorgeschlagene Optionen). Baue diesen Plan in die folgenden Fragen ein, damit der Benutzer ihn in einem Schritt bestätigt oder korrigiert.

Vor dem Start

Frage den Benutzer (ein AskUserQuestion-Aufruf) nach allem, was der Aufrufer nicht bereits entschieden hat:

  • Ausgabeformat: ZIP / CBZ / PDF.
  • Cover (vorderer Einband): Platzierung – erste Seite der Ausgabe / nicht verwendet / separate Datei neben der Ausgabe; und Quelle – eine vom Benutzer angegebene Datei / der erste Scan / der vordere Teil des Schutzumschlags / ein im Web gefundenes Bild.
  • Rückseite: Platzierung – letzte Seite vor dem Schutzumschlag / nicht verwendet / separate Datei neben der Ausgabe; und Quelle – eine vom Benutzer angegebene Datei / der letzte Scan (vor dem Schutzumschlag, falls dieser der letzte Scan ist) / der hintere Teil des Schutzumschlags / ein im Web gefundenes Bild.
  • Schutzumschlag (Scan oder Bild des Buchumschlags): dieselben zwei Fragen; Quelle – eine vom Benutzer angegebene Datei / der letzte Scan / ein im Web gefundenes Bild.

Eine Quelle aus den Scans wird aus den Textseiten entfernt, selbst wenn ihre Platzierung „nicht verwendet“ ist (sie wird nicht verarbeitet oder behalten). Falls es keine Quelle für Cover/Rückseite/Schutzumschlag gibt, ist jeder Scan eine Textseite. Bei einem Web-Bild suche nach der Ausgabe, die zu den Scans passt (Titel, Verlag, ISBN falls sichtbar), lade die größte Version in den Arbeitsbereich, zeige sie dem Benutzer und lass sie vor der Verwendung bestätigen.

Seitenverarbeitung

  1. Cover / Rückseite / Schutzumschlag (wie in „Vor dem Start“ festgelegt). Alle folgenden Schritte gelten nur für Textseiten.
    • Cover: wird unbearbeitet verwendet (farbig, Abmessungen unverändert). Einbezogen → die erste Seite. Aus dem vorderen Teil des Schutzumschlags: betrachte den aufrechten Schutzumschlag und finde die Spalten X0–X1 der Vorderseite – zwischen dem Falz des Buchrückens und der vorderen Umschlagklappe (rechts vom Buchrücken bei einem linksgebundenen Buch, links davon bei einem rechtsgebundenen / senkrecht geschriebenen Buch) – und schneide nur diesen Bereich aus, in voller Höhe (farbig).
    • Rückseite: dasselbe wie das Cover. Einbezogen → die Seite nach der letzten Textseite (vor dem Schutzumschlag). Aus dem hinteren Teil des Schutzumschlags: die Rückseite, zwischen der hinteren Umschlagklappe und dem Falz des Buchrückens (auf der anderen Seite des Buchrückens als die Vorderseite).
    • Schutzumschlag: nur in die richtige Ausrichtung drehen (farbig, Abmessungen unverändert). Pixelgenau drehen; wenn die Abmessungen des JPEG keine verlustfreie Drehung zulassen, PNG verwenden. Einbezogen → die letzte Seite; im PDF wird nur diese Seite in Originalgröße (entsprechend ihrer DPI) eingefügt.
    • Separate Datei: speichere sie neben der Ausgabe als <Ausgabename>-cover.<ext> / <Ausgabename>-back.<ext> / <Ausgabename>-jacket.png, unverändert von dem, was das Skript geschrieben hat.
  2. Schräglagenkorrektur: für jede Seite die Schräglage innerhalb von ±3° in 0,1°-Schritten erkennen und korrigieren.
    • Drehung (die Zeilen sind geneigt) und Scherung (die Zeilen sind waagerecht, aber nur die linken/rechten Kanten des Textblocks sind schräg – dies passiert, wenn das Papier in einem Einzug seitlich verrutscht) getrennt erkennen und korrigieren.
    • Seiten mit wenig Text (Titelseiten, Schmutztitel, kurze Seiten) können nicht zuverlässig auf Schräglage geprüft werden; daher nicht korrigieren.
  3. Randminimierung: auf nur 2 mm (24 Pixel bei 300 dpi) Rand auf jeder Seite des Textblocks zuschneiden.
    • Scanschattierungen, dünne Linien an den Seitenrändern oder kleine Sprenkel im Textblock nicht einbeziehen. Schattierungen und Linien an den Seitenrändern aufhellen.
  4. Einheitliche Abmessungen: alle Textseiten eines Bandes erhalten die gleichen Abmessungen.
    • Pro Band eine Zuschnittsgröße festlegen und pro Seite so positionieren, dass der Textblock dieser Seite passt (die Position des Textblocks verschiebt sich um einige mm von Scan zu Scan). Seiten mit wenig Text (Titelseiten, Kapitelanfänge, kurze Seiten) übernehmen die Position einer benachbarten Seite auf derselben Seite (ungerade/gerade), damit sie ihr ursprüngliches Layout behalten.
    • Seiten, die aus dem Kasten überlaufen, werden leicht verkleinert, um hineinzupassen.
    • Nur auf Anweisung: Bildseiten wie ganzseitige Illustrationen und Titelseiten aus dem Textkasten nehmen und ihnen einen gemeinsamen Bildseitenkasten mit derselben Höhe wie der Text, aber breiter geben (--picture). Dies ermöglicht kleinere Ränder bei den Textseiten.
  5. Leerseiten: nicht überspringen; als leere Seiten behalten.
  6. Jede Seite behalten: keine Seiten löschen, auch Anzeigen nicht.
  7. Schwarz-Weiß: nur auf Anweisung auf Schwarz-Weiß binarisieren (es ist verlustbehaftet, also nicht standardmäßig).
    • Text binarisieren, aber Bildbereiche wie Fotos und Illustrationen nicht binarisieren; sie graustufig belassen.
    • Einen Schwellwert von 200 (0–255; Pixel dunkler als dies werden schwarz) als Basis verwenden. Automatische Auswahl (Otsu, etwa 160) machte den Text zu blass.
    • Nach der Arbeit den verwendeten Schwellwert melden und den Benutzer fragen, ob dieser Wert richtig aussieht.
  8. OCR: nur auf Anweisung eine OCR-Textschicht zum PDF hinzufügen (ocrmypdf -j 2 -l jpn+eng --output-type pdf, Bilder unverändert; -l an die Sprache des Inhalts anpassen, z. B. kor+eng für Koreanisch). Apple OCR neigt bei großen Seitenzahlen zu Zeitüberschreitungen; daher mit qpdf in 50-Seiten-Blöcke aufteilen, jeden OCRen, nur die fehlgeschlagenen wiederholen, dann zusammenführen.
    • Bei wiederholter Verwendung kann Apple OCR (LiveText) stillschweigend leere Textschichten zurückgeben, ohne Fehlermeldung. Vor dem Zusammenführen jede Seite mit pdftotext überprüfen, ob Text extrahiert wurde; für Blöcke mit leeren Textseiten etwas warten und wiederholen. Wenn das nicht hilft, den Mac neu starten.
  9. Lesezeichen (Indizierung): nur auf Anweisung Inhaltsverzeichnis-Lesezeichen (Gliederung) zum PDF hinzufügen.
    • Die Seiten des Inhaltsverzeichnisses lesen und Teile/Kapitel/Abschnitte in derselben Hierarchie wie das Inhaltsverzeichnis hinzufügen, mit Überschriften genau wie gedruckt (Vorwort, Nachwort, Kommentar, Anmerkungen, Register usw. einschließen, falls sie im Inhaltsverzeichnis stehen). Zuerst einen Eintrag für das Inhaltsverzeichnis selbst, der auf die Inhaltsverzeichnisseite verweist. Teile/Kapitel ohne Seitenzahl im Inhaltsverzeichnis verweisen auf ihre Titelseite oder die Seite mit ihrer Überschrift.
    • Die Zuordnung zwischen gedruckten Seitenzahlen und PDF-Seiten durch Lesen von Seitenzahlen an mehreren Stellen ermitteln. Sie kann sich verschieben (z. B. wegen Frontispizen); daher für jeden Eintrag der obersten Ebene und einige der unteren Ebenen überprüfen, ob die Überschrift tatsächlich auf der Zielseite erscheint.
    • Mit pikepdf unter Verwendung des gleichen Verfahrens wie bei der Metadatenbearbeitung (keine Bildneukompression) schreiben und /PageMode /UseOutlines setzen. Nach dem Schreiben zurücklesen und überprüfen. Falls es kein Inhaltsverzeichnis gibt, keine Lesezeichen hinzufügen; den Benutzer informieren.

Ausführung

uv run <Ordner dieses Skills>/scripts/jisui.py <Bildordner> <Ausgabeordner> [--threshold N | --gray | --color] [--no-deskew 1,12,...] [--picture 3,24,...] [--dpi N] [--cover first|DATEI|jacket:X0-X1] [--back last|DATEI|jacket:X0-X1] [--jacket last|DATEI] [--jacket-rotate 0|90|180|270] führt Schritt 0 (--cover: kopiert den ersten Scan oder die DATEI unbearbeitet als 0000.<ext>, oder mit jacket:X0-X1 schneidet diese Spalten des aufrechten Schutzumschlags als 0000.png aus (benötigt --jacket); --back: dasselbe für die Rückseite, aus dem letzten Scan (vor dem des Schutzumschlags genommen), geschrieben direkt nach den Textseiten als NNNN.<ext> (.png bei Zuschnitt aus dem Schutzumschlag); --jacket: nimmt den letzten Scan oder die DATEI, dreht ihn im Uhrzeigersinn um --jacket-rotate und schreibt ihn als letztes NNNN.png; verwende sie immer, wenn es eine Cover-/Rückseiten-/Schutzumschlagsquelle gibt, unabhängig von deren Platzierung), Schritte 1–3 und Schritt 6 (Schwarz-Weiß) (mit --gray kein Schwarz-Weiß und Seiten bleiben graustufig; mit --color Seiten bleiben farbig) aus und schreibt die Seitenbilder (PNG) und einen Bericht (<Ausgabeordner>-report.json: Schwellwert, Kastenabmessungen, leere/verkleinerte Seiten und Seiten mit Graustufenbereichen). Seitennummern sind die Ausgabenummern (NNNN.png; das Cover ist 0, die erste Textseite 1). Übergib Seitennummern, die nicht entzerrt werden sollen, an --no-deskew und Bildseitennummern an --picture (der Bericht enthält dann auch die Abmessungen des Bildseitenkastens; die Höhe ist gleich der des Textkastens, daher genügt ein --imgsize). Lege Arbeitsausgaben im Arbeitsbereich ab; schreibe niemals in die ursprünglichen Scans oder die Ordner des Benutzers.

  • Nimm kein Beschnittformat an. Standardmäßig werden die Ränder minimiert und die Textseiten einheitlich groß gemacht. Die Auflösung für die Umrechnung mm↔px stammt aus dem DPI-Tag des Bildes; falls kein Tag vorhanden oder unter 150 (ein Platzhalter wie 72), nimm 300 dpi an (andernfalls --dpi N übergeben).
  • Beim Erstellen eines PDFs die Größe mit img2pdf --imgsize x<Kastenhöhe in mm> festlegen (die Ausgabe-PNGs tragen keine DPI-Informationen). Die Cover-/Schutzumschlagsseite separat ohne --imgsize (Originalgröße entsprechend ihrem DPI-Tag) erstellen und mit pikepdf anhängen.
  • Überprüfe nach der Verarbeitung einige Seiten als Bilder (Schräglage, Zuschnitt, Binarisierung) und kontrolliere, dass die leeren/verkleinerten Seiten im Bericht Sinn ergeben, bevor du die Ausgabe erstellst.

Ausgabe

Vor dem Packen die Bilder von Cover/Rückseite/Schutzumschlag, deren Platzierung „nicht verwendet“ oder „separate Datei“ ist, aus dem Satz nehmen (und die separaten wie in Schritt 0 speichern).

  • ZIP: die verarbeiteten Seitenbilder in der obersten Ebene des Archivs ablegen, mit Dateinamen in Seitenreihenfolge. Bilder nicht neu komprimieren (zip -0). .DS_Store und Ähnliches nicht aufnehmen.
  • CBZ: wie ZIP, mit der Erweiterung .cbz. Leseprogramme verwenden das erste Bild als Vorschaubild. ComicInfo.xml nur durch Metadatenbearbeitung hinzufügen.
  • PDF: dieselben Bilder wie das ZIP ohne Neukompression anordnen (img2pdf). OCR folgt Schritt 7, Lesezeichen Schritt 8.
  • Modusnamen: werden durch die Textseiten bestimmt – color / grayscale / bw (ein farbiges Cover allein macht es nicht zu color). +ocr anfügen, wenn eine OCR-Schicht vorhanden ist, und +toc, wenn Lesezeichen vorhanden sind (niemals bei ZIP/CBZ). Ob dies in den Dateinamen aufgenommen wird, liegt am Aufrufer.

Metadatenbearbeitung (Titel / Autor)

Werte vom Aufrufer (Katalog, Benutzer) übernehmen. Niemals raten und ausfüllen.

  • Nur die Felder Titel und Autor. Keine Übersetzer in Autor eintragen.
  • PDF: Titel und Autor sowohl im Info-Wörterbuch als auch in XMP schreiben, ohne Seiten neu zu komprimieren (pikepdf).
  • EPUB: nur das Haupt-dc:title und jedes dc:creator im OPF ändern (sowie die dcterms:* / file-as-Meta, die diese verfeinern); nichts anderes anfassen. Das ZIP unter Beibehaltung der Eintragsreihenfolge und Kompressionsmethoden neu schreiben, mit mimetype an erster Stelle und unkomprimiert. Standard Ebooks' Untertitel-/Langtitel-Einträge können unverändert bleiben.
  • CBZ: ComicInfo.xml (<Title>, <Writer>) am Ende des Archivs schreiben, gespeichert (zip -0), die Bildeinträge unverändert lassen. Bei rechts-nach-links-Büchern (japanischer vertikaler Text, Manga) auch <Manga>YesAndRightToLeft</Manga> einfügen, wenn der Benutzer zustimmt.
  • ZIP (gescannte Bilder): hat keine Metadaten, daher überspringen.
  • An einer Kopie im Arbeitsbereich arbeiten, überprüfen (Seitenanzahl / Einträge unverändert, gelesene Metadaten stimmen mit den angegebenen Werten überein), dann die Originaldatei ersetzen. Das Ersetzen überschreibt die Datei des Benutzers, daher zuerst bestätigen lassen, es sei denn, der Aufrufer hat es genehmigt.

Verwandte Skills