Swift패키지 · v0.1.0

KLReadingOrder

OCR후보를 가로, 세로 또는 자동 방향에 따라 읽기 행으로 정렬합니다.

KLReadingOrder는 문자열, 신뢰도, 정규화된 사각형, 페이지 번호, 원래 입력 순서를 받아 읽기 순서로 묶은 행을 반환하는Swift패키지입니다. OCR자체나 문서의 의미를 분석하지 않고 인식 결과를 읽기 좋은 순서로 정리하는 작업만 담당합니다.

지원OS
iOS 17+ · macOS 14+
개발 환경
Swift 6.0+
라이선스
MIT
외부 의존성
없음

기능

  • 가로쓰기는 위에서 아래, 같은 행에서는 왼쪽에서 오른쪽
  • 세로쓰기는 오른쪽 열에서 왼쪽으로, 같은 열에서는 위에서 아래
  • 페이지마다 가로쓰기와 세로쓰기를 자동 판정
  • 글자 크기에 맞춰 행과 열 판정 범위를 조절

포함하지 않는 기능

이 패키지는OCR, 기울기 및 회전 보정, 원근 보정, 신뢰도 필터링, 언어 감지, 표 추출, 문서 의미 분석을 수행하지 않습니다. 같은 페이지에 있는 모든 사각형은 반드시 동일한 정규화 좌표계를 사용해야 합니다.

SwiftPM으로 추가

Package.swiftSwift
.package(url: "https://github.com/KoenLee1023/KLReadingOrder.git", from: "0.1.0")

사용 방법

연동 예제Swift
let engine = ReadingOrderEngine()
let lines = engine.reconstruct(
    candidates: observations,
    preferredDirection: .unknown
)

for line in lines {
    print(line.text)
}
ReadingOrderEngine

빈 후보 제거, 페이지 분리, 방향 판정, 행 또는 열 분류, 정렬, 결과 병합을 동기 방식으로 수행합니다. 네트워크나 파일 작업은 하지 않습니다.

ReadingOrderPolicy

행과 열 판정에 사용하는 임계값을 공개하며 용도에 맞게 조정할 수 있습니다.

ReadingOrderLine

읽기 순서로 정렬한 후보ID, 병합한 사각형과 문자열, 평균 신뢰도, 페이지 번호, 확정된 쓰기 방향을 반환합니다.

데모 앱

Reading Flow

가로쓰기는 위에서 아래, 같은 행에서는 왼쪽에서 오른쪽 · 세로쓰기는 오른쪽 열에서 왼쪽으로, 같은 열에서는 위에서 아래

Layout Comparator

페이지마다 가로쓰기와 세로쓰기를 자동 판정 · 글자 크기에 맞춰 행과 열 판정 범위를 조절