| name | dicta-book-pipeline |
| description | Use when the user asks to process a Dicta book โ identify headings, validate hierarchy, OCR-compare against the original PDF, or run final QA before pushing to otzaria-library. Triggers: "ืชืขืื ืกืคืจ ืืืงืื", "ืืืืงื ืกืืคืืช", "ืืฉืืืื ืืื PDF", "ืืืืื ืืืชืจืืช". The skill orchestrates: HebrewBooks DB lookup โ PDF download โ page OCR โ diff โ header proposal โ QA report. |
Dicta Book Processing Pipeline
You are running a multi-stage pipeline that bridges Step 5.3 of dicta-automation-plan.md. The deterministic prefix (5.1, 5.2) is already implemented as CLIs. Your job is the AI-judgment passes: header identification, OCR comparison, and final QA.
ืฉืคืช ืืชืืืื (ืืืื)
ืื ืืชืืืืืช ืืืฉืชืืฉ ืืขืืจืืช ืืืื. ืืืฉืชืืฉ ืืื ื ืงืืจื ืื ืืืืช. ืื ืชืืชืื ืืฉืคืืื/ืืกืืจืื ืืื ืืืืช ืืื ืืืฉืชืืฉ (ืคืื ืืืืื ืฉื ืคืงืืืืช/ืงืื/ืฉืืืช ืฉืืืช ืืืชืจ). ืื ืื ืขื ืื ืฉืืื ืืคืืืคืืืื.
ืืืกืืืืช ืืคืื (ืืืื)
ืืงืืืฅ ื ืคืชื ืืขืืจื .claude/skills/dicta-book-pipeline/scripts/ืขืจืืืช ืกืคืจ ืืืืฆืจืื.html, ืฉืขืืื ืฉืืจืโืืืจโืฉืืจื. ืืงืืืฅ ืชืงืื ืจืง ืื ืืื ืขืืื ืืื ืืืืืื ืืืืื. ืืืง ืืืืืืื ื ืืืคืื ืข"ื validate-otzaria (ืจืื Stage 6), ืืืืงื ืืืจืฉืื ืืืืงืช AI/ืกืงืืจื ืขืฆืืืืช ืื ืื ืชืืืืื ืืืื ืช ืชืืื. ืืขืืื ืื ืชื ืื ืฉืโCLI ืืืกื ืืื ืฉืืื ื ืืืคืืข ืืคืื ืฉืื.
ืืืื ืืฉืื: ืืืชืจืืช ืืื ืืืฃ ืืกืคืจ
ืืคืืืคืืืื ื ืืขื ืืขืืงืจ ืืขืืืืช ืืืชืจืืช ืืงืืืืข. ืืืืื ืช ืืกืคืจืืื, ืืืชืจืืช (<h1>โ<h6>) ืื ืฉืืืช ื ืืืื ืืืืฅ ืืืืฃ ืืกืคืจ, ืืืื ืืืชืจ ืืืฆืืข ืืืืฆืข ืืื ื ืจืืื ืืฉืืขืืชื: ืคืชืืืช ืงืืฆืืจืื, ืืืกืคืช ืืกืืช, ืฉืื ืื ืจืืช ืืืชืจืช, ืืืกืคืช ืฉื ืคืจืง ืงื ืื ื, ืืชืืงืื ื ืืกืื ืืืชืจืช ืืฆืืจื ืืืงืืืืช ืืืืฆืจืื.
ืืขืืืช ืืืช, ืืืฃ ืืกืคืจ ืขืฆืื ืืื ืืงืกื ืืงืืจ. ืืกืืจ ืืืืกืืฃ ืื ืชืืื, ืืฉื ืืช ื ืืกืื, ืืคืชืื ืงืืฆืืจืื, ืืชืงื ืืฉืื, ืื ืืืืืืฃ ืืืืื ืขื ืกืื ืืฉืขืจื. ืืืืฃ ืืกืคืจ ืืืชืจ ืืืฆืข ืจืง ืคืขืืืืช ืืื ืืืช/ืกืืืื ืืืช ืื ืืจืฉืืช ืืขืจืืื:
- ืงืืืืข ืฉืืจืืช: ืืืืื ืฉืืจืื ืื ืคืืฆืื ืืื ืืขืจืืช ืืฉืืจืืช ื ืคืจืืืช, ืืื ืืฉื ืืช ืืช ืืืืืื.
- ืกืืืื ืืืืืจึพืืืชืืื ืโ
<b>...</b>, ืืื ืืฉื ืืช ืืช ืืืืืื.
- ืืขืืจืช ืกืื ืืื ื ืืชืื ืืืืฃ ืืืืชืจืช ืืืฉืจ ืืจืืจ ืฉืืื ืืืชืจืช ืฉืืืืืฆื, ืืืฉื
ืืฃ ืคื ืข"ื.
- ืชืืงืื OCR/ืืงืกื ืืืืฃ ืืกืคืจ ืจืง ืืืจื ืืฉืืืื ืืคืืจืฉืช ืืืงืืจ ืืืืฉืืจ ืืื, ืืืคืืจื ืโStage 5.
- ืืืชืจืช ืืื ืืฉืืจื โ ืืกืืจ ืืงืกื ืืืจื
</hN> ืืืืชื ืฉืืจื.
- ืืื
<big> ืืืืชืจืืช โ <h2><big>ืืกืืช ืงืืืฉืื</big></h2> โ <h2>ืืกืืช ืงืืืฉืื</h2>. ืฉืืจืืช <big> ืืงืืจืืืืืืช ืืืืืืช ืืจืืฉ ืงืืข (<big>ืืืืฉื</big>) โ ืืืกืืจ; ืงืืืืคืื <big>ืชื ืื ืฉืื...</big> ืืกืืฃ โ ืืืฉืืืจ.
- ืงืืืฅ ืืื ืืื ืืกืืช โ ืคืฆื ืงืืืฅ ืจืโืืกืืชื,
<h1> ื ืคืจื ืืื ืืกืืช ืืชืื ืืช <ืฉื ืกืคืจ> ืขื <ืืกืืช>. ืืื ืืจืฉืืื ("/โ/โ) ืโ<h1>.
- ืืืชืจืช
ืืฃ ืื ืืงืืช, ืืื ืืจืฉ โ ืขืืื ื = ., ืขืืื ื = : (ืืฃ ื'โืืฃ ื., ืืฃ ื':โืืฃ ื:).
- ืื ืคืชืืืช ืืฃ ืืืฉ = ืืืชืจืช
<h> ื ืคืจืืช, ืืืื. ืืกืืจ ืฉืคืชืืืช ืืฃ ืชืืคืืข ืืืงืกื ืืืืืฉ ืืชืื ืืืืฃ. ืกืื ืืฃ ืฉืืืืืจ ืืฉืืฅ ืืชืื ืืงืืข โ <b>ืืค"ื</b>, <b>ืืฃ ืค"ื</b>, ืืฃ ืคื ืข"ื, ื' ืคื ืืื' โ ืืื ืคืชืืืช ืืฃ, ืืืฉ ืืืืืจ ืืืชื ืืืืชืจืช ืืฉืืจื ื ืคืจืืช (<b>ืืค"ื</b> ืข"ื ืืืืจื... โ <h3>ืืฃ ืคื.</h3> ืืฉืืจื ืืืช ืืื ืืืืจื... ืืฉืืจื ืืืื). ืืขืืื ื ืงืืข ืืืกืื (ืข"ืโ., ืข"ืโ:); ืื ืืื ืกืื ืขืืื โ ืืจืืจืช ืืืื ืขืืื ื (.), ืื ืืฆืื ืืื ืโDB/ืืงืฉืจ (Stage 6 ฮน).
- ืงืืข = ืฉืืจื ืืืช, ืืืกืชืืืืช ืโ
: โ ืื ืืขืจื/ืืืืืจ ืืื ืฉืืจืช body ืืืช ืฉืืื. ืืืืืื ืฉื ืืืงืื ืืจืื ืฉืืืจ ืืืช ืืฉืชื ืฆืืจืืช, ืืฉืชืืื ืืชืืงื ืืช ืืืืชื ืืขื:
- ืืืืื ืืืืืืช ืืฉืืจืืช ื ืคืจืืืช (
<b>ืืืจ</b> / <b>ืืืขืชืืง</b> ...) โ ืึทืึตื ืืฉืืจื ืืืช.
- ืืื ืืขืจืืช ืืืืกืืช ืืฉืืจื ืืืช, ืืืคืจืืืช ืโ
: โ ืคึทึผืฆึตึผื ืืฉืืจื ืืื ืืขืจื.
ืงืืข ืืกืชืืื ืโ: (ืกืืฃ ืขื ืืื); ืงืืข ื ืืฉืึพืืืืืจ ืืกืชืืื ืโ. ืืชืื ืืืืืฉื ืืื : ืืกืืฃ.
- ืืืืืจึพืืืชืืื ืืืืืฉ โ ืชืืืืช ืื ืงืืข: ืขืืืฃ ืืช ืืืื ืืืื (ืื ืจืง ืืืื ืืืช) ืโ
<b>. ืืคืืจืืฉื ืชืืืื ืืืื ืืื ืืฆืืืื ืืืืืจื, ืืืกืชืืืืช ืื ืงืืื ืืชืื ืืชื: <b>ืืจืื ืืืจ ืืฉืื ืฉืืื ืขืืื ืืฆืืืื ืืงืืืื.</b> ืคืืจืืฉ.... ืึทืึตื <b> ืขืืงืืื ืฉื ืืื/ืฉื ืืื (<b>ืืืจ</b> <b>ืืืขืชืืง</b> โ <b>ืืืจ ืืืขืชืืง</b>); ืื ืชืืื ืืืืช/ืืงืืจืืช ื ืคืจืืื (<b>ืชืืก'</b> <b>ื"ื ืืื</b> ื ืฉืืจืื ืฉื ืืื).
- ืจืืืช ืืืกืืืช โ ืืฃ = ืจืื ืืืช ืืชืืช ืืคืจืง; ืคืจืง = ืจืื ืืืช ืืชืืช ืืืกืืช/ืืืง. ืื ืคืจืง=
<h2> ืื ืืฃ=<h3>; ืื ืคืจืง=<h3> ืื ืืฃ=<h4>. ืืฉืืืฃ ืืื ืืืืืช ืืืื ื ืืขืืืื ื (ืืื ืืืชืจืช ืคืจืง/ืืกืืช ืืขืืื) โ ืืฃ=<h2>. ืืื ืืกืคืจ ืจืื ืืืืืื ืงืืืข.
- ืฉื ืืืชืจืช ืื ืืจืื โ ืชืืื ืืืืชืจืช ืขืฆืื ื ืืชื ืืฆืืจื ืืงื ืื ืืช, ืื ืืคื ืฉืืืคืืข ืืืคืืก:
- ืืกืจ ืฉื ืืืืจ ืืืืชืจืช โ ืืื ืืืจ ืโ
<h1> (ืืืืฉื ืคืจืงื ืงืื ืืืชืืืืช ืืืจื"ื โ ืืืืฉื ืคืจืงื ืงืื ืืืชืืืืช).
- ืคืชื ืงืืฆืืจืื โ
ืค' ืืืืืจ โ ืคืจืง ืืืืืจ.
- ืืืกืฃ
ืืกืืช ืืืืชืจืช ืืกืืช ืืฉืืกืจ โ <h2>ืืจืืืช</h2> โ <h2>ืืกืืช ืืจืืืช</h2>.
- ืืืชืจืช ืคืจืง ืืคืืจืื
<ืฉื ืืคืจืง> - ืคืจืง <ืืกืคืจ> โ ืฉื ืืคืจืง ืืืงืืื ืืฉ"ืก ืชืืืื, ืืงืฃ, ืืื "ืคืจืง" + ืืกืคืจ. ืืกืคืจ ืืฉืืฃ โ ืืืกืฃ ืืช ืฉื ืืคืจืง ืืงื ืื ื (ืคืจืง ื' ืืืชืืืืช โ ืืืฉื ืฉื ืคืื - ืคืจืง ืฉืืื ื). ืืืจืืื ื 1โ10 ืืืืืื (ืฉืืืขื/ืฉืืื ื/ืขืฉืืจื), 11+ ืืืืืืจืื (ืื/ืื/ืื). ืื ืขืืืืช ืฉืืงืืโืืขืช ืโStage 4 (ืืืจืฉืช ืืืข ืืฉืืืช ืคืจืงื ืืฉ"ืก), ืื ื ืืจืืื ืืืจืืื ืืกืื.
- ื ืจืืื ืืจืฉืืื โ
'' (ืืจืฉ ืืคืื) โ ", ืืจืฉืืื ืืืคืืืจืคืืื โ/โ โ ". (ื ืืืฃ ืข"ื clean-text.)
Inputs you need from the user
Ask for whatever is missing โ but only ask once per conversation, and do not ask for things already saved in memory or already provided.
| Input | How to obtain |
|---|
| ืื ืชืื ืืงืืืฅ ืโTXT ืฉื ืืืงืื (ืื ืขืจืื ืื ืืฆื-ืขืจืื) | ืฉืื ืืช ืืืฉืชืืฉ ืื ืงืื ืืืคืขืื |
| ื ืชืื ืโDB ืฉื ืงืืืื HebrewBooks | ืืจืืจืช ืืืื: ~/Downloads/otzaria_latest/otzaria/otzar-HB_catalog.db. ืืคืฉืจ ืืืขืืืจ ืื ืโ--db, ืื ืืฉืืืจ ืโHB_CATALOG_DB ืโ.claude/skills/dicta-book-pipeline/.env.local |
ื ืชืื ืโseforim.db ืฉื ืืืฆืจืื | ืืจืืจืช ืืืื: ~/Downloads/otzaria_latest/otzaria/seforim.db. ื ืืจืฉ ืจืง ืืืืืงืืช ืฆืืืืืช ืืื ืืงืกื ืืฉ"ืก ืโStage 6 |
| URL + API key ืฉื ืฉืจืช ืโOCR | env vars OCRWIN_URL, OCRWIN_API_KEY. ืื ืืกืจืื โ ืฉืื ืืฆืืจ .claude/skills/dicta-book-pipeline/.env.local (gitignored) |
| ืฉื ืืฉืชืืฉ + ืกืืกืื ืโotzaria.org | ืจืง ืื ืืืฉืชืืฉ ืืืงืฉ ืืืืจืื ืกืคืจ ืืืืชืจ (Stage 0). ืฉืื ืืช ืืืฉืชืืฉ ืืื ืคืขื. ืืกืืจ ืืฉืืืจ/ืืืชืื ืืงืืืฅ/ืืืืืจ โ ืจืื Stage 0 |
ืืืืจืื/ืงืื ืคืืืืจืฆืื ืืงืืืืช ืโDB
ืื ื ืชืื ืืจืืจืช ืืืืื ืโDB ืื ืงืืื ืืืืฉืชืืฉ ืืกืจ ื ืชืื ืืืืคื, ืฉืืืจ ืืช ืื ืชืื ืืืืืจืื ืืืงืืื ืืืชืืื ืฉื ืืกืืื ืื ืืืื. ืื ืืื ืืืืจืื ืืชืืื ืืืื, ืืชืื ืืืชื ืโ.claude/skills/dicta-book-pipeline/.env.local ืืฉืืืช:
HB_CATALOG_DB=/path/to/otzar-HB_catalog.db
SEFORIM_DB=/path/to/seforim.db
ืืงืืืฅ ืืื gitignored ืืืื ื ืืืื ืกืืืืช. ืืื ืืจืฆื ืขืชืืืืช ืงืจื ืงืืื env vars, ืืืจ ืื .env.local, ืืจืง ืืกืืฃ ืืช ืืจืืจืืช ืืืืื. ืืขืืจ ืืช ืื ืชืื ืืคืืขื ืืื ืกืงืจืืคื/ืฉืืืืชืช SQLite ืฉืฆืจืืืื ืืืชื (search_hb.py --db ..., ืืืคืืฉ ืโseforim.db, ืืื').
Stage 0 โ ืืืจืืช ืกืคืจ ืืืชืจ otzaria.org (ืืืคืฆืืื ืื)
ืืจืฅ ืฉืื ืื ืจืง ืืฉืืืฉืชืืฉ ืืืงืฉ "ืชืืจืื ืกืคืจ ืืืืชืจ" / ืืฆืืืข ืขื https://otzaria.org/library/admin/uploads. ืื ืืืฉืชืืฉ ืืืจ ื ืชื ื ืชืื ืืงืืืฅ TXT โ ืืื ืืฉืจ ืโStage 3.5/1.
ืืืืื โ ืืืื: ืขืืื ืโuploads ืืืื ืืืชืืืจืืช (nextโauth). ืืงืฉ ืืืืฉืชืืฉ ืฉื ืืฉืชืืฉ + ืกืืกืื ืืื ืืคืขืื (ืืืฉื ืโAskUserQuestion). ืืขืืื ืื ืชืืชืื ืืช ืืคืจืืื ืืงืืืฅ, ืโ.env, ืโmemory, ืื ืืชืื ืโSKILL ืืื. ืืฉืชืืฉ ืืื ืจืง ืืชืื ืืืงืฉื ืืจืฆื. ืโsession cookie ืืคืฉืจ ืืฉืืืจ ืืงืืืฅ ืืื ื (/tmp/...jar.txt).
ืืืชืจ ืืื ืืคืืืงืฆืืืช Next.js ืขื nextโauth, provider ืืกืื credentials, basePath /api/auth ืืฉืืจืฉ ืืืืืืื. ืฉืืืช ืืืชืืืจืืช: identifier (ืฉื ืืืฉืชืืฉ) + password.
ื. ืืชืืืจืืช (ืคืขื ืืืช)
JAR=/tmp/otz_jar.txt; rm -f "$JAR"
CSRF=$(curl -s -c "$JAR" "https://otzaria.org/api/auth/csrf" \
| python3 -c "import sys,json;print(json.load(sys.stdin)['csrfToken'])")
curl -s -b "$JAR" -c "$JAR" \
--data-urlencode "csrfToken=$CSRF" \
--data-urlencode "identifier=<USERNAME>" \
--data-urlencode "password=<PASSWORD>" \
--data-urlencode "callbackUrl=https://otzaria.org/library/admin/uploads" \
--data-urlencode "json=true" \
"https://otzaria.org/api/auth/callback/credentials"
curl -s -b "$JAR" "https://otzaria.org/api/auth/session"
ืื ืโsession ืจืืง ({}) โ ืืืชืืืจืืช ื ืืฉืื (ืกืืกืื ืฉืืืื / ืืื ืืจืฉืืช admin). ืืืื ืืืฉืชืืฉ ืืขืฆืืจ.
ื. ืจืฉืืืช ืืืขืืืืช + ืกืื ืื
curl -s -b "$JAR" "https://otzaria.org/api/admin/uploads/list" -o /tmp/otz_list.json
ืืืืืจ {"success":true,"uploads":[{id, bookName, originalFileName, uploadedBy, uploadedByEmail, uploadedAt, uploadType, status, bookStatus, editCopy, isOcr}, ...]}.
- ืืชืืื ืืืงืื =
uploadType == "dicta" (ืื originalFileName ืืกืชืืื ืโ_dicta.txt).
bookStatus โ ืขืจืื ืืกืืืืก ืืฉืื ืื (ืืคื ืฉืืืคืืขืื ืโlist ืืคืืขื): not_checked (ืื ื ืืืง), In_treatment (ืืืืคืื), ready (ืืืื), needs_attention (ืืืจืฉ ืืืคืื), Website_editing (ืขืจืืืช ืืชืจ), added_to_library (ื ืืกืฃ ืืกืคืจืืื / ืืืื ืก ืืืืฆืจืื). ืืคืืืคืืืื ืืฉืชืืฉ ืืฉื ืืื ืืืื: In_treatment ืโadded_to_library (ืจืื ืฉืื ื ืืื ืืื ืโStage 7).
- ืืืื ืืคื
uploadedAt ืืืจื ื"ืืืืฉ ืืืืชืจ".
ืืื ืืช ืื ืืงืจืืืจืืื ืื ืฉืืืฉืชืืฉ ืืืงืฉ (ืกืื ืืืงืื, ืกืืืืก, ืืื'). ืื ื ืฉืืจื ืืื ืืืขืืืื โ ืืฆื ืโAskUserQuestion. ืื ืืืฉืชืืฉ ืืืจ "ืื ืืฉื ื ืืืื" โ ืงื ืืช ืืืืฉ ืืืืชืจ.
ื. ืืืจืืช ืืงืืืฅ
curl -s -b "$JAR" "https://otzaria.org/api/download/<UPLOAD_ID>" \
-o "/tmp/dicta_pipeline/<book>/dicta.txt"
(ืืืจืื ืืจืืื: POST /api/download/batch ืขื {"uploadIds":[...]} โ zip.)
ื. ืืืืงืช ืืืงืืจ ื'ืื ืขืจืื'
ืืคื ื ืืืขืืจ ืืคืืืคืืืื, ืืชืจ ืืช ืืืงืืจ ืืืืืื ืฉื ืืกืคืจ ืชืืช
DictaToOtzaria/ืื ืขืจืื/ืกืคืจืื/ืืืฆืจืื/<ืงืืืืจืื>/<ืฉื>.txt (ืืืคืืฉ ืโlist.txt ืื find).
ืืงืืืฅ ืฉืืืจื ืโuploads ืขืฉืื ืืืืืช ืืฆืโืขืจืื (ืืืชืจืืช ืืืจ ืืืื), ืืขืื ืฉืืืงืืจ ืืื ืืืืฆืื ืืืืืื โ ืืื ืืฉืืฉ ื"ืจืคืจื ืก ืืคื ืโื ืืงืื" ืโStage 5. ืกืื ืืืฉืชืืฉ ืืช ืืืืื (ืฉืืจืืช, ืืกืคืจ ืืืชืจืืช, <big>).
ื. ืฉืื ืื ืฉื + ืืขืืื ืโstage (ืืื ืฉืืืฉืชืืฉ ืืจืื ืืช ืืฉืื ืืืื)
ืฉื ืืงืืืฅ ืโuploads ืืื ืืงืืืงื ืขื ืกืืืืช _dicta (ืชืืืื_ืืืื_ืืืจืื ืื_ืืื_ืืจืืขืื__ืืืง_ื_dicta.txt). ืฉื ื ืืืชื ืืฉื ืืงื ืื ื ืืคื ืฉืืื ืืืคืืข ื'ืื ืขืจืื' (ืฉืืืชืจ ืืฉืื ื) โ ืืฉื ืื ืงื ืขื ืจืืืืื, ืืื _dicta, ืืืฉื ืืื ืืจืืขืื ืืืง ื.txt.
- ืืขืชืง ืืช ืืงืืืฅ ืฉืืืจื ืืฉืืจืฉ ืืคืจืืืงื ืขื ืืฉื ื'ืื ืขืจืื'. ืืคืงืืืืช ืืฉืื ืื ืจืฆืืช ืืชืืงืืืช ืฉืืจืฉ ืืคืจืืืงื (cwd), ืืื ืืฉืชืืฉ ืื ืชืื ืืืกื โ ืืื ื ืชืื ืืืืื ืชืืืโืืืื ื:
cp "/tmp/dicta_pipeline/<book>/dicta.txt" "./<ืฉื ื'ืื ืขืจืื'>.txt"
(ืฉืืืจ ืขื ืืจืืืื ืืืืืืง ืฉื ืืฉื ื'ืื ืขืจืื', ืืืื ืจืืื ืืคืื ืื ืงืืื.)
- ืืขืื ืโstage ืืช ืืงืืืฅ ืืืืืื ืืื ืืืืจ ืืืขืชืงื, ืืคื ื ืืจืฆืช ืฉืืจ ืืคืืืคืืืื:
git add "<ืฉื ื'ืื ืขืจืื'>.txt"
ืื ืโstaged ืืื ืืืจืกื ืืืืืืืช ืฉืืืจืื, ืืขืจืืืืช ืืคืืืคืืืื ืฉืืืืื ืืืจ ืื ืืืฉืืจื ืืโstaged โ ืืื git diff ืืจืื ืืืฉืชืืฉ ืืืืืง ืื ืืคืืืคืืืื ืฉืื ื.
- ืื ืชืขืฉื
git add ืฉืื ืืืจื ืขืจืืืืช ืืคืืืคืืืื, ืืื ืื ืืืฉืชืืฉ ืืืงืฉ ืืืช ืืืคืืจืฉ.
ื. ืกืืืื ืืกืืืืก ืโ"ืืืืคืื" (In_treatment) โ ืืื ืืืืจ ืืืืจืื
ืืื ืืืจื ืฉืืงืืืฅ ืืืจื (ืืืืื ืโUPLOAD_ID), ืขืืื ืืช ืืกืืืืก ืฉืื ืโotzaria.org ืโIn_treatment ("ืืืืคืื"), ืืื ืืกืื ืฉืืกืคืจ ื ืืงื ืืขืืืื. ืืฉืชืืฉ ืืืืชื $JAR ืืืืชืืืจืืช (ืฉืื ื):
curl -s -X PUT "https://otzaria.org/api/admin/uploads/batch-update-book-status" \
-b "$JAR" -H "Content-Type: application/json" \
--data-raw '{"uploadIds":["<UPLOAD_ID>"],"bookStatus":"In_treatment"}'
- ืโendpoint ืืงืื ืืขืจื
uploadIds, ืื ืฉืืคืฉืจ ืืกืื ืืื ืกืคืจืื ืืืงืฉื ืืืช (["id1","id2"]).
- ืึทืึตึผืช ืฉืืชืฉืืื ืืฆืืื ืช ืืฆืืื. ืื ื ืืฉื โ ืืืื ืืืฉืชืืฉ, ืื ืืคืฉืจ ืืืืฉืื ืืคืืืคืืืื (ืืกืืืื ืืื ื ืืืกื ืขืืืื).
- ืื ืชืกืื
added_to_library ืืฉืื ืืื. ืืืขืืจ ืโ"ื ืืกืฃ ืืกืคืจืืื" ืงืืจื ืจืง ืืกืืฃ, ืืืจื ืืืฉืืจ ืืืฉืชืืฉ ืืงืืืื (ืจืื Stage 7).
Stage 1 โ Locate the book in HebrewBooks
ืืื ื ืโDB (otzar-HB_catalog.db)
ืโDB ืืืื ืฉืชื ืืืืืืช ื ืคืจืืืช:
| ืืืื | ืชืืื | ืืื ืืืคืฉ ืื? |
|---|
hebrew_books | ืงืืืื HebrewBooks (~60K ืกืคืจืื) | ืื โ ืืกืคืจื ืืืงืื ืืืื ืืฉื |
otzar_hahochma | ืงืืืื ืืืฆืจ ืืืืื (~163K ืกืคืจืื) | ืื โ ืืืงืื ืื ืืฉืชืืฉืื ืื |
ืกืคืจื ืืืงืื ืืงืืจื ืื ืืจืง ืโHebrewBooks. ืืกืืจ ืืืคืฉ ืโotzar_hahochma. ืืกืงืจืืคื search_hb.py ืืืจ ืืืืื ืืืืื ืื ืืื ื โ ืื ืชืืืข ืื.
ืกืืืช hebrew_books
id_book INTEGER PRIMARY KEY โ ืื ืื ืโID ืืืืจืืช PDF (ืจืื Stage 2)
title TEXT
author TEXT โ ืืคืืจืื "ืืฉืคืื - ืคืจืื ืื ..."
printing_place TEXT โ ืืืืืื "ืืืื", "ืืจืืฉืืื"
printing_year TEXT โ ืืืืืจืื ("ืชืจืื"). ืืฆื ืืืฉืชืืฉ ืืช ืื.
pub_date INTEGER โ ืฉื ื ืืืขืืืช (1866). ืืฆื ืืกืืืจืืื ืื ืืกืืืข.
pages INTEGER
tags TEXT โ ืืขืจื JSON (ืืกืงืจืืคื ืคืืจืกืจ ืืืชื ืืจืฉืืื)
ืกืืจ ืืคืขืืืืช
- ืืกืง ืืช ืฉื ืืกืคืจ ืืโTXT ืื ืื ืก: ืืชืืื ืฉื
<h1> ืืฉืืจื ืืจืืฉืื ื. ืื ืืื ืืืื "ืขื ืืกืืช X" / "ืขื X", ืฉืืื ืื ืกืืช ืื ืืื ืืกืืืืช โ ืืืืจ ืขืฉืื ืืืืคืืข ืืงืืืื ืืฆืืจื ืืืจืช.
- ืืจืฅ ืืช ืืืืคืืฉ:
python3 .claude/skills/dicta-book-pipeline/scripts/search_hb.py --title "<book>" --json
- ืืกืงืจืืคื ืืืืืจ ืขื 25 ืชืืฆืืืช, ืืืืื ืืช ืืคื ืืืืื (ืืชืืื ืืืืืงืช โ ืืชืืื โ ืืืื โ ืืืืื ืืฉืืชืคืืช).
- ืื ืืกืงืจืืคื ืฉืืืื "DB not found" โ ืืจืง ืื ืฉืื ืืช ืืืฉืชืืฉ ืขื ื ืชืื ืืืืคื, ืืืขืืจ ืืืชื ืโ
--db.
- ืื ืืฉ ืืืขืื ืืืื ืขื score ืืืื (ืืืชืจืช ืืื / starts-with) โ ืืืฉื, ืืื ืืฆื ืืืฉืชืืฉ ืฉืืจื ืืืช
[<id>] <title> โ <author>, <place> <printing_year> ืืืฉืจ ืืคื ื ืืืจืื.
- ืื ืืฉ ืืื ืืืขืืืื โ
AskUserQuestion ืขื ืขื 4 ืืคืฉืจืืืืช. ืืืืืข ืฉืฆืจืื ืืืืืช ืืื ืืคืฉืจืืช:
- label: ืืืชืจืช + ืืืืจ (ืงืฆืจ)
- description: ืืงืื + ืฉื ื (ืื ืืืืืจืื ืืื ืืืขืืืช) + ืืกืคืจ ืขืืืืื + ืชืืื
- ืืฉืชืืฉ ืโpub_date (ืืืขืืืช) ืืกืื ืื ืืืืจ ืื ืืืฉืชืืฉ ืืืื ืืืชืจ ืโprinting_year (ืืืืืจืื).
- ืื ืืื ืืืขืืืื โ ืืืื ืืืฉืชืืฉ. ืืฆืข:
- ืืืคืฉ ืืืื ืืืช ืืืืืชืจืช ืืืื.
- ืื ืืืฉืชืืฉ ืืืืจ ืืช ืืืืืจ โ ืืืคืฉ ืืคื ืฉื ืืืืืจ (ืืฉ ืืชืืื ืืื ืืจื
--title ืื ืืกืงืจืืคื ืืืคืฉ ืืืืชืจืช ืืืื; ืืืืืคืืฉ ืืคื ืืืืจ ืืคืฉืจ ืืืงืฉ ืืื ื ืืืจืืฅ sqlite3 ืืื ื).
- ืืืงืฉ id ืืฉืืจืืช ืืืืฉืชืืฉ.
ืื ืชื ืืฉ id. ืื ืืืฉืชืืฉ ืกืืคืง id ืืฉืืจืืช โ ืืื ืขื ืฉืืืื 1โ5.
Stage 2 โ Download the PDF
URL ืืืืจืื: https://download.hebrewbooks.org/downloadhandler.ashx?req=<ID> โ ืืื ืืื ืืกืคืจืื.
python3 .claude/skills/dicta-book-pipeline/scripts/download_pdf.py --id <ID> --out /tmp/dicta_pipeline/<book>/source.pdf
ืืกืงืจืืคื ืฉืืืจ ืโcache; ืื ืืงืืืฅ ืงืืื โ ืื ืืืจืื ืฉืื.
Stage 3 โ Convert PDF to images and OCR
python3 .claude/skills/dicta-book-pipeline/scripts/pdf_to_pages.py --pdf <pdf> --out-dir /tmp/dicta_pipeline/<book>/pages --dpi 300
python3 .claude/skills/dicta-book-pipeline/scripts/ocr_batch.py --in-dir <pages> --out /tmp/dicta_pipeline/<book>/ocr.txt --concurrency 8
- ืโOCR ืืืฆืจ ืงืืืฅ ืืื ืฉืืจืื ืืช ืื ืืขืืืืื, ืขื ืืคืจืื
\n\n=== PAGE N ===\n\n.
- ืฉืจืช ืโOCR ืืงืื ืืงืฉื ืืืช ืืขืืื (multipart
file + header X-API-Key). ืืกืงืจืืคื ืฉืืื ืืืงืืื.
- ืื ืืฉืจืช ืื ืืืื โ ืืื ืขื ืฉืืืื 5 ืโ6 ืืืืืข ืืืฉืชืืฉ ืฉืื ืืคืฉืจ ืืืฉืืืช ืืื ืืืงืืจ.
Stage 3.5 โ Split & normalize (deterministic)
ืจืืฅ ืชืืื, ืื ืืฉโOCR ืืืืื. ืืกืงืจืืคืืื ืโ../EditingDictaBooks/edit_dicta_cli.py (ืืืกืืช ืืฉืืจืฉ ืืคืจืืืงื โ ืืืืจ EditingDictaBooks ืืื ืชืืงืืื ืืืืช ืืคืจืืืงื; ืชืืืืื --json, ืงืื ืืฆืืื 0/1/2). ืื ืื ื ืืฆื ืฉื โ ืฉืื ืืช ืืืฉืชืืฉ ืขื ืืืืงืื.
- ืคืฆื ืืคื ืืกืืช โ ืื ืืฉ ืืื ืืกืืชืืช (ืืื
<h2> / ืงืืืืคืื ืื ืชื ืื ืฉืื ืืกืืช X / ืกืืืง ืืกืืช X), ืฆืืจ ืงืืืฅ ื ืคืจื ืืื ืืกืืช ืขื <h1> ืืฉืื ืืชืื ืืช <ืฉื ืืกืคืจ> ืขื <ืืกืืช>. ืืฆื ืืช ืจืฉืืืช ืืงืืฆืื ืืืืฆืขืช ืืืฉืจ ืืคื ื ืืฆืืจื.
- ื ืงื
<h1> โ ืืกืจ ืืจืฉืืื ("/โ/โ).
- ื ืงื ืืงืกื โ
clean-text --file <f> (ื ืจืืื ืืจืฉืืื ''โ" ืโโโ", ืจืืืืื ืืคืืืื, ืฉืืจืืช ืจืืงืืช).
- ืืกืจ
<big> ืืืืชืจืืช ืืืฉืืจืืช ืืงืืจืืืืืืช ืืืืืืช (ืื ืงืืืืคืื ืกืืื).
- ื ืจืื ืืืชืจืืช
ืืฃ โ page-number --file <f> --style dot-colon ืโreplace-page-b ืืืืจืช ืขืืื ื/ืืจืฉ ืโ./:. โ ืฉืชื ืืคืงืืืืช ืคืืขืืืช ืจืง ืืฉืืฉืืจื ืืืจื ืืืชืจืช ืโืืฃ ืขืืืื ื ืืฉืืช ืกืื ืข"ื/ืขืืื ื; ืื ืืืงืื ืืืจ ืืกืืจื ืืืชื, ืืืืชืจืช ื ืฉืืจืช ืืฃ ืื ืืฉืืคื ืืืคืงืืื ืืื noโop ืฉืงื. ืืื ืืืจื ืืืจืฆื ืืืช ืฉืื ื ืืชืจื ืืฃ ืืืชืจืช ืืฃ ืืื ./:: grep -nE '<h[2-6]>ืืฃ [^.:<]*</h[2-6]>' <f>. ืืื ืืฃ ืืฉืืฃ ืืกืง ืืช ืืขืืื ืืืจืฆืฃ โ ืืฃ ืืื ืืจืืจืชโืืืื ืขืืื ื (.); ืื ืืืจ ืงืืื ืืฃ N. ืืืืชื ืืกืคืจ, ืืืฉืืฃ ืืื ืขืืื ื (:). ืื ืขืืืืช ืืืืืืโืจืฆืฃ (ืงืืืืจืื ฮน ืโStage 6), ืื ื ืืจืืื ืืืจืืื ืืกืื.
- ืืืืฉ ืืืื ืจืืฉืื ื โ
emphasize-first --file <f> (ืืืกืืฃ <b> + ืคืืกืืง ืกืืฃ). ืืจืืืช ืืืื ืืืืื ืืืืืื <b> ืขืืงืืื (ืืืกืืื ยง6) ืื ืฉืืงืืโืืขืช ืโStage 4.
- ืืคืจื ืืืชืจืืช ืืืืงืืช ืืืงืกื โ ืฉืืจื ืฉืืชืืืื
<h ืืื ืืกืชืืืืช ืโ>: ืืืชืจืช ืืฉืืจื ืืืช, ืืงืกื ืืฉืืจื ืืืื. ืืชืจ: grep -nE '^<h[1-6]>' <f> | grep -vE '>[[:space:]]*$'.
ืกืืืื ืืืฉืชืืฉ: ืืืื ืงืืฆืื ืคืืฆื, ืืื ืืืชืจืืช ื ืืจืืื, ืืื ืืืืื ืจืืฉืื ืืช ืืืืืฉื, ืืื ืืืชืจืืช ืืืคืจืื.
Stage 4 โ Header proposal (LLM Pass A)
ืื ืืชื. ืืขื ืืช prompts/headers.md, ืงืจื ืืช ืืงืืืฅ ืื ืื ืก, ืืืคืง ืืฆืขืืช ืืืชืจืืช.
ืขืงืจืื ืืช ืืืืืืื:
- ืืกืืจ ืืขืจืื ืืช ืืงืืืฅ ืืฉืืจืืช. ืืคืง ืจืง
headers.proposed.json ืืืื ื:
[{"line": 142, "current": "...", "proposed": "<h3>ืืฃ ื.</h3>", "level": 3, "confidence": "high|medium|low"}]
- ืืืืฃ ืืกืคืจ ืื ืชืืกืืฃ ืชืืื ืฉืื ืงืืื ืืื ืชืฉื ื ืืืืื. ืืืืชืจืืช ืืืื ืืืชืจ ืืืฆืืข ื ืจืืื ืงื ืื ื ืืคื ืืืกืืืืช ยง8, ืืืฆืืื ืโ
rationale ืื ื ืืจืื.
- ืืืชืจืช ืืื ืืฉืืจื โ ืืื ืืงืกื ืืืจื
</hN> (ืืืกืืืืช ยง1).
- ืจืืืช ืืืกืืืช (ืืืกืืืืช ยง6): ืงืืข ืงืืื ืืช ืขืืืง ืืืืชืจืช ืืขืฅ, ืืื ืืืืจ ืจืื:
- ืฉื ืืกืคืจ/ืืืกืืช โ
<h1> (ืงืืื, ืื ืชืืืข)
- ืืืง / "ืืกืืช X ืขื ืืจื"ืฃ" / "ืืงืืื" โ
<h2>
- ืคืจืง โ
<h2> ืื <h3> (ืืคื ืืื ืงืืื ืืืง <h2> ืืขืืื)
- ืืฃ โ ืจืื ืืืช ืืชืืช ืืคืจืง (
<h3> ืื <h4>)
- ืกืืื / ืกืขืืฃ โ ืจืื ืืืช ืืชืืช ืืืฃ
- ืืกืืจ ืืืื ืจืื (h2โh4). ืื ืืกืจื ืืืชืจืช ืืื ืืื โ ืืฆืข ืืืืกืืฃ ืืืชื (ืืืฉื
<h3>ืคืจืง ืืืฉื</h3>).
- ืืฉ"ืก: ืฆืื
ืืฃ ื. ืโืืฃ ื: ืื ืฉืชื ืืืชืจืืช ื ืคืจืืืช, ืื ืืืช.
ืืืืจ ืืืคืงื โ ืืฆื ืืืฉืชืืฉ ืกืืืื: ืืื ืืืชืจืืช ืืืฆืขื, ืืชืคืืืืช ืจืืืช, ืืืื ืโconfidence ื ืืื. ืฉืื ืื ืืืืื ืืืืืืืืช ืืช ืโhigh ืื ืจืง ืืกืงืืจ ืืื.
Stage 5 โ OCR diff (LLM Pass D โ only on flagged regions)
python3 .claude/skills/dicta-book-pipeline/scripts/diff_texts.py --dicta <dicta.txt> --ocr <ocr.txt> --out /tmp/dicta_pipeline/<book>/diff.json --threshold 0.85
ืืกืงืจืืคื ืืฆืื ืจืง ืงืืขืื ืฉืืื ืืืืื ืคืืื < threshold. ืขืืืจ ืื ืคืขืจ:
- ืืฆื ืืช 3 ืืฉืืจืืช ืืคื ื, ืืฉืืจื ืืืฉืืื, 3 ืฉืืจืืช ืืืจื โ ืืฉืืืฉืช ืืืงืืจืืช (Dicta / OCR / ืืคื ืโื ืืงืื ืื ืืืื).
- ืชืคืงืืื ืโLLM: ืืงืืืข ืื ื ืืื. ืืฉืชืืฉ ืืฉืืงืื ืืขืช ืื ืืกื:
- Dicta ืฆืืืง ืืจืื ืืืืจืืข. ืืืโprior: ~85% Dicta ื ืืื.
- OCR ืฆืืืง ืจืง ืืืฉืจ ืืฉ ืฉืืืื ืืจืืจื ืโDicta (ืืืช ืืืืืคืช ืืกืงื ืืช โ ืโืจ, ืโื โ ืืืขืืื ืโOCR ืืจืืจ).
- ืฉื ืืื ืฉืืืืื ืงืืจื. ืื ืืฉืื ืื ืืกืชืืจ โ ืกืื ืโmanual_review.
- ืืคืง
corrections.proposed.json ืืืืชื ืืื ื ืืื headers.
ืืืง ืืื: ืืขืืื ืื ืืืืืืฃ ืืืืืืืืช ืขื ืืกืืก OCR. ืจืง ืืืฆืืข. ืืืฉืืจ ืื ืืฉื ืืื ืืจืืฉื.
Stage 6 โ Final QA pass (LLM Pass B)
ืืขื ืืช prompts/qa.md. ืงืจื ืืช ืืงืืืฅ ืืืืืื (ืืืจื ืฉืื 4).
ืืจืฅ ืงืืื ืืช ืืืืื ืืืืจืืื ืืกืื ืขื ืื ืงืืืฅ ืคืื:
python3 ../EditingDictaBooks/edit_dicta_cli.py validate-otzaria --file <path> --shas
ืคืงืืื ืื ืืืืคืช ืืช ืืืืกืืืืช ืืืืจืืื ืืกืืืืช ืฉืโCLI ืืืืข ืืืืืง: ืชืืื, ืืืชืจืืช ืขื ืืงืกื ื ืืืื, ืคืืฆืื ืจืโืืกืืชื, ืืจืฉืืื ืโ<h1>, ืโ<big> ืืืืชืจืช/ืืงืืจืืืื. ืืื ืืื ื ืืืืงืช ืืื ืช ืชืืื: ืืื ืืืื ืืืื, ืืื ืื ืืืืืจ ืืกืชืืื ืืงืืข ืขืฆืืื, ืืื ืงืืข ืืจืื ืฆืจืื ืคืืฆืื, ืื ืืื ืืืชืจืช ืคืจืง ืงื ืื ืืช ื ืืื ื. ืงืื ืืฆืืื: 0 = ืขืืจ (ืืจืืง), 1 = ืืคืจืช ืืืกืืื ืงืฉื. ืชืงื ืื ืืขืื "ืงืฉื" ืขื ืฉโexit=0:
multi_masechta, h1_gershayim, big_in_heading, decorative_big, opening/closing_without_opening, heading_errors.
ืืืืฆืืื ืชืืช advisory_daf_format ืโadvisory_heading_sequence ืืื ื ืืืฉืืืื ืืช exit, ืื ืืื ื ืจืขืฉ ืฉืืืชืจ ืืืื ืขืืื โ ืืกืคืจื ืืืืืฉืื ืื ืจืืขืฉืื (ืืคืื ื ืืื ืื ืฉืื ืืกืืจ), ืื ืื ืื ืืจืฉืช ืืืืืื ืืืขืืืืช ืืกืคืืจ. ืืฉโOCR ืืืืื ืื ืืืคืืื ืืืืืงื ืืืืืืช (ืงืืืืจืื ฮน). ืืืื ืืื ืืืืื ืืืืืืื (ืืืืืจ ืืื ื ืื ืืืฃ) ืืืขืืช ืืืืชืืช.
ืืจื ืืขืืืื ืืืืืืฆืช ืืืืชืจืืช: ืขืืืจ ืขื ืื ืืืืชืจืืช ืืจืฆืฃ, ืืื ืื ืชืืืื ืื ืืฃ ื. ืชืงืื ืืืขืื. ืฆืืจ ืืขืฆืื ืจืฉืืืช ืืืชืจืืช ืืกืืืจืช (line, level, text), ืกืื ืืจืืืืช ืืจืืช ืกืืืื, ืืืืื ืืืฉืชืืฉ ืงืืื ืจืง ืืช ืืืจืืืืช: ืืฃ ืืื ./:, ืืคืืืืช ืืฉืืื, ืงืคืืฆื ืืจืืื, ืืจืืืช/ืขืืืืช ืจืื ืื ืืืืื ืืช, ืืืชืจืช ืฉื ืจืืืช body, ืื body ืฉื ืจืื ืืืืชืจืช. ืื ืื ืืจืฆืฃ ืชืงืื, ืืชืื ืืื"ื ืฉืขืืจืช ืขื ืื ืืืืชืจืืช ืืื ื ืืฆืื ืืจืืืืช.
ืจืง ืืืจื exit=0 โ ืขืืืจ ืืงืืืืจืืืช ืฉืืงืื ืืืขืช:
- ฮฑ โ ืงืืขืื ืืืืืื ืืื ืืืชืจืช (>800 ืืืืื ืืื ืืืชืจืืช ืฆืืืืืช).
- ฮฒ โ ืืืืื ืฉืืื ื ื ืืืคืื ืข"ื ืโCLI ืืืฉ ืืืืืง ืขืฆืืืืช: ืงืืขื body ืฉืืื ื ืฉืืจื ืืืช, ืงืืขืื ืฉืืื ื ืืกืชืืืืื ืโ
:, ืืืืืจึพืืืชืืื ืงืฆืจ ืืื/ืืืืืฉ ืืืงืืช, <b> ืขืืงืืื ืฉืฆืจืื ืืืื, ืืืื ืืขืจืืช ืฉื ืืืกื ืืืืชื ืฉืืจื. ืืฉืชืืฉ ืืืืคืืฉ/ืกืงืจืืคืืื ืื-ืืืง ืจืง ืืขืืจ; ืืืืจืขื ืืื ืืคื ืงืจืืืช ืืืงืฉืจ.
- ฮท โ
ืืฃ ื, ืืฃ ื ืืฉืืจื ืจืืืื (ืื ืืืชืจืช) โ ืืื ืืื ืืืคืข.
- ฮน โ ืืืืืื ืืืชืจืืช
ืืฃ (ืืืื ืืฉโOCR ืืืืื): (ื) ืืืชืจืช ืืฃ ืืื ./: โ ืืกืง ืขืืื ืืืจืฆืฃ ืืชืงื; (ื) ืืกืคืจ ืื ืืืืื ื โ ืงืคืืฆื ืืืืจื ืืื ืื ืืืืื ืืืช ืืืืืจืื (ืืฃ ื ืืคืชื ืืกืืช ืืืงืื ืืฃ ื; ืโื, ืโื , ืโืจ) โ ืืฆืื ืืื ืชืืื ืืงืืข ืืชืงื; (ื) ืืคืืืืช ืืฉืืื โ ืืืชื ืืฃ N: ืืืืจืช ืจืฆืืฃ โ ืืืืง ืืืืงืช ืืฃ ืืขืืืช ืืขืืช ืืกืคืืจ; (ื) ืกืื ืืฃ ืืชืื ืืืืฃ โ <b>ืืค"ื</b>, ืืฃ ืค"ื, ืืฃ ืคื ืข"ื ืืื' ืืืืคืืขืื ืืืงืกื ืืื ืืืืชืจืช โ ืื ืืื ืืื ืคืชืืืช ืืฃ ืฉืืืืืฆื; ืืืจ ืืืืชืจืช <h> (ืืืกืืื ยง4). ืืชืจ: grep -nE '<b>ืืฃ?ืค?["ืณ]' <f> ืโgrep -nE 'ืืฃ [ื-ืช]+ ืข"[ืื]'.
- โ ืืืืจื โ ืื ืชืืืจ ืจืืฉืโืชืืืืช ืืขืืืืจืื. ืืจืื
<b>ื..."...</b> ืื ืจ"ืช ืืื ืืคืื: <b>ื"ื</b>=ืืืืืจ ืืืชืืื (ืื ืคืืฅ ืืืืชืจ!), <b>ื"ื</b>, <b>ืืช"ืง</b>=ืืชื ื ืงืื, <b>ืื"ืง</b>=ืืืืจ ืงืจื, <b>ืืืฉ"ืข</b>=ืืืฉืืืื ืขืจืื. ืืืจ ืจืง ืืฉืืกืื ืืืืื ืโืข"ื/ืข"ื, ืื ืฉืืืจืื ืคืชืืืช ืืืื (ืืืืจื/ืืชื ื'/ืชืืก'/ืจืฉ"ื) ืืืืกืคืจ ืืฉืชืื ืืจืฆืฃ ืืืคืื ืฉื ืืืกืืช. ืชืืื ืืจืฅ dryโrun ืืืฆื ืืช ืืืืขืืืื ืืคื ื ืืืจื โ ืืกืคืจ ืืืืืฉืื ืขื ืชืืก' ืจืื/ืื ืโ<b>ื"ื</b> ืืื ื ืืคืื.
- ืืืงืจื ืฉืืืืฉ ืืืืชืจืืช, ืื ืขืืื ืืืืืช ืืขืืช OCR ืคืฉืืื, ืื ืขืืื ืืจืื ืื ืขื ืืฉืืืช OCR ืฉื ืงืืข/ืขืืื ืฉืื: ืืฉ ืืืืื ืืืืืจืืช, ืืืคื ืืืงืฉืจ. (ืืืฉื
ืืฃ ืคื ืืืืจ 4ร ืืื ืงืคืืฆื ืโืืฃ ืคื โ ืกืืื ืฉืโOCR ืฉื ืืืืชืจืืช ืืืคืื ืฉืืืืฆืข ื ืฉืืจ, ืื ืืขืืช ืืกืคืืจ ืืืืืช.)
- ืืฆืื ืืื ืโDB ืืื ืืงืืืข ืืช ืืืืช:
seforim.db ืืืื ืืช ืืงืกื ืืฉ"ืก. ืงืืข ืืช ืื ืชืื ืืคื env var SEFORIM_DB, ืืืจ ืื .env.local, ืืืจ ืื ืืจืืจืช ืืืืื ~/Downloads/otzaria_latest/otzaria/seforim.db. ืงื ืืืืื/ืืืืืจึพืืืชืืื ืืฆืืื ืืืงืืข (ืชืืก' ื"ื ืืชื, ืืชื ื' ...), ืืคืฉ ืืืชื ืโDB, ืืงืื ืืช ืืืฃ+ืขืืื ืืืืืชื โ ืืื ืชืงื ืืช ืืืืชืจืช (ืืืฉื ืืงืืข ืชืืก' ื"ื ืืชื ื ืืฆื ืืืฃ ืคื.; ืชืืก' ื"ื ื"ื ืืืฃ ืคื:).
- ฮธ โ ืฉืืจืืช ืขื ืชืืืื ืืืืจืื/ืจืฆืคืื ืื ืืืืื ืืื โ ืืฉืื ืโOCR (ืจืง ืื OCR ืืืื).
ืืคืง ืื"ื ืกืืคื report.md ืขื ืืกืขืืคืื: ืกืืืื ืื ืื, ืจืฉืืื ืืกืืืจืช ืืคื ืจืืช ืืืืจื, ืืืืืฆื โ ืืื ืืกืคืจ ืืืื ืืืืืคื ืโrepo, ืื ืืืจืฉ ืืงืจืช ืืื.
Stage 7 โ Output and handoff
/tmp/dicta_pipeline/<book>/
โโโ source.pdf (Stage 2)
โโโ pages/ (Stage 3)
โโโ ocr.txt (Stage 3)
โโโ headers.proposed.json (Stage 4)
โโโ diff.json (Stage 5 โ automated)
โโโ corrections.proposed.json (Stage 5 โ your output)
โโโ report.md (Stage 6)
ืืกืืจ ืืืืืฃ ืโrepo otzaria-library ืืื ืืืฉืืจ ืืคืืจืฉ ืืืืฉืชืืฉ. ืื ืขื ืืืฉืืจ โ ืชืืื ืโbranch ื ืคืจื, ืื ืโmain.
ืกืืืื ืืกืืืืก ืโ"ื ืืกืฃ ืืกืคืจืืื" (added_to_library) โ ืจืง ืืกืืฃ
ืืืขืืจ ืืกืืคื ืงืืจื ืื ืืจืง ืืืจื ืฉโืฉื ื ืืชื ืืื ืืชืงืืืื:
- ืืืฉืชืืฉ ื ืชื ืืืฉืืจ ืกืืคื ืืกืคืจ (ืกืงืจ ืืช ืโ
git diff / ืืื"ื ืืืืฉืจ), ืืื
- ืืฉืื ืืืื ื ืื ืกื ืืงืืืื (commit).
ืจืง ืื ืขืืื ืืช ืืกืืืืก ืโotzaria.org ืโadded_to_library ("ืืืื ืก ืืืืฆืจืื"), ืขื ืืืชื endpoint ืืฉืื 0/ื (ืื ืโ$JAR ืคื, ืืชืืืจ ืืืืฉ ืืคื Stage 0/ื):
curl -s -X PUT "https://otzaria.org/api/admin/uploads/batch-update-book-status" \
-b "$JAR" -H "Content-Type: application/json" \
--data-raw '{"uploadIds":["<UPLOAD_ID>"],"bookStatus":"added_to_library"}'
- ืื ืชืงืคืืฅ ืโ
In_treatment ืโadded_to_library ืืคื ื ืืืฉืืจ ืืงืืืื. ืื ืืืฉืชืืฉ ืืืฉืจ ืื ืขืื ืื ืงืืืืช โ ืื ืชืกืื.
- ืึทืึตึผืช ืืฆืืื ืืชืฉืืื ืืืืื ืืืฉืชืืฉ ืฉืืกืืืืก ืขืืืื ืโ"ื ืืกืฃ ืืกืคืจืืื".
Conventions
- ืื ืงืจืืื ืืกืงืจืืคื: ืื ืื ืืื ืืฉืืชื ืงืืืฅ โ ืืจืื ืืืฉืชืืฉ ืื ืงืจื, ืขื ืืืื ืงืืืฅ ืขืืืช, ืืืื ืฉืื ืืืื. ืืฉืชืืฉ ืืคืื
--json ืฉื ืืกืงืจืืคืืื ืืงืืืืื.
- ืื ืืฉืืื ืืืฉืื ื ืืฉืื (DB ืื ื ืืฆื, OCR ืื ืืืื) โ ืืืื, ืื ืชืืฉืื ืขื ื ืชืื ืื ืฉืืืืื.
- ืฉืืืจ ืขื ืืกืืจ: ืกืืืื'ืื 1โ3 ืื ืชืฉืชืืช; 4โ6 ืืืจืฉืื ืฉืืงืื ืืขืช. ืื ืืกืืืื' ืชืฉืชืืช ื ืืฉื, ืกืืืื' ืืฉืืงืื ืื ืืืืฆืข.
- ืืื ืฉืื ืืฆื ืืืฉืชืืฉ ืกืืืื ืงืฆืจ (1โ2 ืืฉืคืืื): ืื ืจืฅ, ืื ืืชืืฆืื, ืื ืืฆืขื ืืื. ืื ืชืืื ืืืืืื ืืื.
Failure modes โ what to do
| ืชืจืืืฉ | ืชืืืื |
|---|
OCRWIN_URL ืื ืืืืืจ | ืืงืฉ ืืืืฉืชืืฉ URL+key, ืฉืืืจ ืโ.env.local, ืืืฉื |
| ืโPDF ืื ืืืจื (404, ืืืืืจ) | ืืืชืื ID ืฉืืื. ืืฆื ืืช ืโURL ืืืชืืงืฉ ืฉืื ืืืืฉืชืืฉ |
pdftoppm ืื ืืืชืงื | ืืืืจ: brew install poppler |
| OCR ืืืืืจ ืืงืกื ืจืืง ืืขืืื | ืจืฉืื ืืืืจื, ืืืฉื ืืฉืืจ ืืขืืืืื, ืืฆืืื ืืื"ื |
| ืืืชืจ ืโ1000 ืขืืืืื | ืืืืจ ืืช ืืืฉืชืืฉ ืืคื ื ืืชืืื โ ืื ืืืงื ืืื |
| ืืืฉืชืืฉ ืืืงืฉ ืืงืคืืฅ ืืฉืจ ืโStage 6 | ืืืืืืื. ืืื ืืื OCR ืืื ืืืืืช ืืืืืช ฮธ. ืืกืืจ. |
Scripts in this skill
ืืกืงืจืืคืืื ืชืืืืื ืโ--json ืืืืฆืืช ืคืื ืฉืืืฉ ืืขืืืื ืฉืื.
Prompts