Working with Korean-medicine texts involved two related tasks: transcribing the page and establishing how its Chinese characters should be read in Korean. A correctly recognised character can have an incorrect reading; a plausible reading can also conceal an OCR mistake. I built a workflow that kept these layers separate and linked both back to the source page.
The initial registry covered 12 volumes and 5,817 pages. Those figures describe the registered input, not completed output. The local manifest also distinguished 12 logical documents from 11 physical PDF files because two volumes arrived in a combined file. Their exact page boundary remained an item to verify.
Connecting the layers without replacing the source
Each physical PDF page received an ID, with printed page numbers stored separately. That ID linked the source, rendered image and raw OCR draft. Corrections belonged in a canonical transcription, accompanied by a record of the changed character, its location and the reason for the change.
Korean character readings were stored in another layer. They were pronunciations, not translations or modern-language paraphrases. IDs for blocks and character segments made each reading traceable to its source span, including text in tables and diagrams.
Matching character counts alone would not resolve an ambiguous reading or a specialist name. Automated coverage checks could identify missing spans; uncertain readings needed a recorded basis or an unresolved status. AI-assisted drafts and machine cross-checks were part of the workflow. Repeated machine checking was not labelled independent human review.
Reopening dependent checks after a correction
A corrected transcription can invalidate a reading that previously passed review. I included code to remove the old reading and QA references from the current page state when a transcription revision is introduced. Earlier files remain in the history, while checking resumes from the revised text.
The states distinguish imported OCR, transcription review, reading drafts, reading review and final locking. locked names completion of the internal workflow. Artifact hashes identify which versions the state refers to; they do not, by themselves, establish the accuracy of the text through external validation.
Checkpoints preserve the page states, revisions and review records needed to resume after an interruption. The ZIP builder checks archive integrity and required entries before giving a checkpoint its final filename and recording its hash. A lightweight checkpoint excludes the source PDF and instead specifies the exact source required for resumption.
The saved work is still partial
The priority document’s states, saved on 29 July, cover 713 pages: 133 marked locked, 13 verified as blank, 10 in progress, 556 still imported drafts and one requiring expert review. A read-only recount on 7 September returned the same totals. That recount was not a new review of the page images or readings.
The merged files are explicitly partial. The merge code leaves markers for pages that are not ready and adds PARTIAL to filenames while the document is incomplete. The surviving output files match the hashes in their merge manifest. This establishes that those partial files are preserved, not that the complete 12-volume corpus has been finished.
I concentrated on preserving a usable point of return: which page, which layer and which check must come next. Completion and corpus-wide accuracy remain unestablished. Redistribution rights also remain unresolved item by item, so this account describes the workflow and saved states without reproducing book text or reading examples.
