BookTranslator
BookTranslator

프락투어(Fraktur) 텍스트 OCR: 현대화하기 전에 원본을 먼저 보존하기

고서를 검색하거나 번역하기 전에, 재현 가능한 간단한 프락투어 OCR 실험을 통해 인식 오류와 긴 s(ſ) 정규화를 구분해 보세요.

BookTranslator

BookTranslator Team

20분 읽기

인쇄된 프락투어를 OCR로 인식하려면 해당 서체를 지원하는 모델을 선택하고, 원본 페이지와 대조하여 짧은 구절을 테스트한 다음, 전사본에 긴 s인 ſ를 그대로 유지할지 아니면 s로 정규화할지 결정하세요. 검수가 끝난 원문 전사본은 이후의 현대어 변환본이나 번역본과 반드시 분리해 두어야 합니다. 더 익숙해 보이는 단어라고 해서 인쇄본을 더 충실하게 읽어낸 결과인 것은 아닙니다.

저희는 프락투어 글꼴로 작성된 두 개의 짧은 합성 독일어 구절과 현대 글꼴로 된 대조군을 테스트했습니다. 깨끗한 이미지였음에도 불구하고, 프락투어 모델은 한 구절에서는 iſt 를 ift 로 바꿨고, 다른 구절에서는 if 로 바꿨습니다. 여기서 얻은 유용한 결과는 어떤 도구가 최고인지 순위를 매긴 것이 아니었습니다. 바로 문자를 인식하는 것, 전사 규칙을 선택하는 것, 언어를 현대화하는 것은 완전히 별개의 세 가지 작업이라는 점을.

이 가이드는 인쇄본 페이지를 대상으로 합니다. 손글씨인 쿠렌트(Kurrent)나 쥐터린(Sütterlin), 훼손된 필사본, 대규모 역사 문서 컬렉션 전체를 처리하기 위한 워크플로는 다루지 않습니다.

OCR을 실행하기 전에 무엇을 올바른 결과로 볼지 결정하세요

도구를 비교하기 전에 한 문장으로 된 전사 기준을 작성해 보세요. 예를 들어 “원본 철자와 긴 s를 유지하고, 확인할 수 없는 단어는 표시해 둔다”와 같이 정할 수 있습니다. 그렇지 않으면 의도된 정규화를 오류로 감점하거나, 문장이 매끄러워 보인다는 이유로 원치 않는 수정본을 그대로 받아들일 수 있습니다.

OCR-D는 이러한 차이를 보여주는 구체적인 예를 제공합니다. OCR-D의 레벨 1 지침에서는 긴 s와 둥근 s를 모두 s; 레벨 2와 3 에서는 둘을 명확히 구분합니다. 이는 전사 규칙일 뿐이며, 모든 옛 철자를 현대식 표기로 바꾸라는 지침이 아닙니다. 공식 레벨 1 s 규칙 및 레벨 2/3 s 규칙.

개인적인 독서 프로젝트라면 다음과 같은 결과물들을 서로 분리하여 관리하세요:

출력 유형자체 제작한 교육용 예문 기준용도
원문 중심 전사본Die rothe Blume ſteht hier.인식된 문자를 이미지와 대조하여 검증
긴 s를 정규화한 파생본Die rothe Blume steht hier.긴 s 구별 없이 검색하거나 읽기
현대화된 파생본Die rote Blume steht hier.철자 변경이 적용된 별도의 교정본

두 번째 행은 단지 ſ 를 s로만 변경하며, OCR-D 레벨 1 규칙을 모두 적용하지는 않습니다. 세 번째 행은 원문의 철자까지 변경합니다. 어떤 파생본도 원문 중심 전사본을 무단으로 대체해서는 안 됩니다.

특히 글자 f 를 s로 일괄 대체하지 마십시오. 실패한 OCR 출력물에 ift가 포함되어 있긴 하지만, 원문에도 실제 f 가 등장할 수 있습니다. 일률적인 대체 규칙에 의존하지 말고 이미지를 직접 대조하면서 단어를 수정해야 합니다.

8회 호출 실험 결과

2026년 9월 11일, 세 줄로 이루어진 두 개의 독창적인 교육용 구문을 각각 UnifrakturMaguntia 와 Noto Sans서체로 렌더링했습니다. 각 이미지는 고정된 두 가지 Tesseract 모델, 즉 tessdata_best Fraktur 스크립트 모델과 영어 모델로 인식 작업을 거쳤습니다. 여기서 영어 설정은 대조군일 뿐, 결코 현대 독일어의 기준 모델이 아닙니다.

8회의 호출 모두 Tesseract 5.5.3, LSTM 모드(--oem 1), 단일 텍스트 블록(--psm 6), 300 dpi를 사용했습니다. 원래 실험에서는 설정을 변경하거나 결과를 제외하거나 인식을 재시도하지 않았습니다. 동일한 8개 이미지에 대해 9월 12일 패키징 재현을 실행했을 때도 저장된 출력 바이트가 그대로 재현되었습니다.

이미지는 글자 형태가 분리된 박스 형태가 아니라, Apple CoreText와 합자(ligature) 기능을 활성화하여 실제 인쇄물처럼 렌더링했습니다. 2200 × 460 크기의 흰색 캔버스에 64픽셀 텍스트를 배치했습니다. 이미지, 글리프 수 검증, 폰트 라이선스, 모델 해시 및 원시 출력 결과는 실험 패키지 지침.

UnifrakturMaguntia 폰트로 렌더링된 원본 3줄 교육용 구절. 긴 s와 책, 페이지, 번호 참조 행이 포함되어 있습니다.

전용 모델이라도 여전히 교정이 필요했습니다

첫 번째 원본 줄은 다음과 같았습니다.

Das Waſſer iſt klar.

프락투어 폰트 이미지에서 프락투어 모델은 다음과 같은 결과를 반환했습니다.

Das Waſſer ift klar.

줄의 대부분은 보존되었지만, ſ 의 iſt 가 f로 바뀌었습니다. 두 번째 구절에서는 Das Thal iſt weit. 가 Das Thal if weit.로 바뀌어, 한 글자가 변경되고 다른 한 글자는 누락되었습니다. 출력 결과가 그럴듯한 독일어로 읽힌다고 해서 원본 대조를 생략할 수는 없습니다.

현대 폰트 대조군에서는 또 다른 오류가 발생했습니다. 프락투어 모델은 첫 번째 구절의 단어는 그대로 유지했지만, Buch 12; Seite 27; Nummer 105. 의 세미콜론 2개를 콜론으로 바꿨습니다. 긴 s만 확인했다면 이러한 문장 부호 변경은 놓쳤을 것입니다.

비교 기준에 따라 점수가 달라집니다

우리는 모든 원시 출력을 인식 전에 확정된 두 가지 기준과 비교해 평가했습니다. 하나는 정확한 원본 텍스트이고, 다른 하나는 원본에서 오직 ſ → s입니다. 두 비교 모두 유니코드를 NFC로 정규화하고 공백을 하나로 축소하지만, 대소문자와 문장 부호는 그대로 유지합니다. 점수를 매기기 전에 원시 출력을 별도로 변환하지는 않습니다.

아래 숫자는 정확도 백분율이 아니라 문자 편집 거리(삽입, 삭제, 대체)입니다.

구절렌더링된 폰트OCR 모델정확한 원본 대비 편집 수긴 s만 정규화한 대상 대비 편집 수
긴 s 및 숫자프락투어프락투어16
긴 s 및 숫자프락투어영어88
긴 s 및 숫자Noto Sans프락투어28
긴 s 및 숫자Noto Sans영어77
고풍스러운 철자프락투어프락투어24
고풍스러운 철자프락투어영어77
고풍스러운 철자Noto Sans프락투어03
역사적 형태의 철자Noto Sans영어44

한 행의 0은 해당 짧은 입력 하나에 대해 정확히 일치함을 의미합니다. 이는 실제 책의 다음 페이지에 대해서는 아무것도 말해주지 않습니다. 반대로 ſ 를 올바르게 보존하는 모델은 s를 요구하는 대상 텍스트와 비교할 때 추가적인 차이가 발생합니다. 이러한 차이는 오인식이라기보다는 정책상의 불일치를 나타냅니다.

다음 링크에서 모든 원본 출력 결과 및 점수, 고정된 원본 텍스트 및 채점 정책, 또는 검증 스크립트를 확인해 보세요. 패키지에는 SHA-256 해시가 기록되어 있어 모델, 이미지 및 출력 결과를 각 결과와 대조할 수 있습니다.

이 실험을 통해 알 수 없는 점

이 텍스트들은 오래된 판본의 스캔본이 아니라 깨끗하고 큰 글꼴로 합성된 두 개의 구절입니다. 흐릿한 잉크, 작은 활자, 책 여백(gutter), 다단 레이아웃, 손상된 종이, 필기체 또는 독립적인 사람의 전사본은 테스트하지 않았습니다. 또한 현대 독일어 모델, 상용 OCR 도구 또는 BookTranslator의 OCR이나 번역 결과물도 테스트하지 않았습니다.

이 예제들을 책 전체의 오류율을 추정하는 지표가 아니라, 소장한 자료를 직접 점검해야 하는 이유로 받아들이시기 바랍니다. 저희라면 이 표만을 보고 역사적 컬렉션을 위한 OCR 서비스를 선택하지는 않을 것입니다.

실제로 필요한 페이지를 대상으로 제한된 테스트를 실행해 보세요

로컬에서 Tesseract를 사용하는 경우 출력을 비교하기 전에 엔진 버전과 정확한 모델 파일을 기록해 두세요. 모델 이름만으로는 다운로드한 파일을 식별할 수 없습니다. 저희의 출처 기록 에는 고정된 공개 모델 및 글꼴 출처가 링크되어 있으며, 대용량 모델 파일은 본 기사에 동봉되어 있지 않습니다.

저희의 단일 블록 샘플 이미지의 경우, Fraktur 스크립트 모델을 로컬에 models/Fraktur.traineddata로 저장했을 때 실행한 명령어는 다음과 같습니다:

tesseract samples/long-s-fraktur.png stdout --tessdata-dir ./models -l Fraktur --oem 1 --psm 6 --dpi 300

Tesseract의 명령줄 설명서 에서는 LSTM 모드와 PSM 6의 단일 균일 블록 가정을 설명합니다. 이 가정은 테스트에 쓰인 세 줄짜리 이미지에는 부합하지만, 다단 레이아웃으로 된 모든 책 페이지를 PSM 6으로 처리하라는 권장 사항은 아닙니다.

실제 작업하려는 책의 경우, 직접 정확하게 전사할 수 있는 구절 하나와 다루어야 할 자료를 대표하는 조금 더 까다로운 페이지 하나로 시작해 보세요. 인명이나 낯선 용어, 숫자, 서체가 바뀌는 부분이 포함된 것이 좋습니다. 책에 여러 문자나 언어가 번갈아 등장한다면 깨끗한 프락투어 한 단락이 문서 전체를 대변한다고 가정하지 말고 별도의 다국어 PDF OCR 가이드 를 참고하세요.

스캔본 원본은 그대로 보존하세요. 원시 OCR 결과는 수정본과 별도로 저장하고, 대조를 거친 각 구절의 페이지나 이미지 식별자를 기록해 두어야 합니다. 결과물을 읽기 어렵다면 수백 페이지로 작업을 확장하기 전에 페이지 이미지와 텍스트 분할 상태를 먼저 다시 점검하세요.

누락된 단어를 임의로 지어내지 않고 전사본 교정하기

원본 위치, 원시 OCR 결과, 교정 확인 텍스트, 사유의 네 가지 열로 구성된 작은 교정 로그를 활용하세요. 사유 항목에는 눈에 보이는 문자 오류인지, 아니면 편집상의 변경인지 구분해 두어야 합니다.

관찰 내용권장하는 작업피해야 할 작업
이미지에는 명확하게 iſt라고 적혀 있으나 OCR 결과는 ift이미지와 대조하여 해당 부분만 수정문서 내의 모든 f 항목을 일괄 치환
OCR이 rothe형태를 보존했으나, 가독성을 위해 rote 형태로 변경하고 싶은 경우원본 형태는 그대로 유지하고, 현대화된 파생본임을 라벨로 명시하여 별도로 생성현대화 작업을 단순 OCR 오류 교정으로 간주
숫자나 문장 부호가 다른 경우앞뒤 문맥이 자연스럽게 읽히더라도 해당 위치를 반드시 원본과 대조 확인특이한 글자 형태만 검토하기
이미지를 실제로 판독할 수 없음작업 중인 전사본에 불확실성을 표시하고 원본 이미지 참조를 유지하기그럴듯하게 생성된 단어를 복원된 근거로 수용하기

다운로드한 PDF에서 이미 텍스트가 선택된다면, 작업을 처음부터 다시 시작하기 전에 복사해 붙여넣은 텍스트를 이미지와 비교해 보세요. PDF 복사-붙여넣기 문제 진단 글에서 눈에 보이는 페이지는 정상처럼 보여도 숨겨진 텍스트나 매핑된 텍스트가 잘못되어 있는 이유를 확인할 수 있습니다. 이는 프락투어 인식 모델을 선택하는 것과는 다른 문제입니다.

검색, 인용문 확인, 또는 단순히 독일어를 읽는 것이 작업의 전부였다면, 신뢰할 만한 원본 텍스트를 확보한 시점에서 작업을 멈추세요. 번역은 필수적인 정리 단계가 아닙니다.

언어가 여전히 장벽일 때만 번역하기

다른 언어가 필요한 독자에게는 검증된 원본 텍스트가 마련된 시점이 바로 번역이 유용해지는 단계입니다. 논란의 여지가 있는 구절이 인식에서 비롯된 것인지 아니면 번역 오류인지 구분할 수 있도록 스캔본, 검토를 마친 전사본, 번역본을 명확히 분리해 두세요. 스캔된 PDF 번역 워크플로 에서 더 폭넓은 연계 방식을 확인할 수 있습니다.

만약 BookTranslator의 PDF 번역기를 사용하기로 했다면, 전체 결과를 맹신하기 전에 직접 다루는 문서의 대표적인 부분을 먼저 평가해 보세요. 저희의 실험은 BookTranslator가 역사적인 프락투어를 얼마나 잘 처리하는지 검증하지 않았습니다 . BookTranslator의 OCR 모드는 문서를 깔끔하게 재구성하는 과정에서 원본 페이지 레이아웃, 글꼴, 글꼴 크기를 변경할 수 있으므로, 그 결과를 영인본처럼 취급하거나 원본의 페이지 참조가 그대로 유지된다고 간주해서는 안 됩니다.

실제 작업 순서는 단순합니다. 원본 판독을 확정하고, 표준화된 부분을 명시한 다음, 필요한 경우에만 번역하는 것입니다. 유려함은 이 모든 과정의 마지막 단계에 있어야 할 요소이지, 시작 단계에서 근거를 대체할 수 있는 것이 아닙니다.

관련 글