Swiftパッケージ · v0.1.0
KLReadingOrder
OCRの認識結果が順不同でも、座標情報を使って人が読む順番に並べ直します。
KLReadingOrderは、文字列、信頼度、正規化した矩形、ページ番号、元の並び順を受け取り、読み順にまとめた行を返すSwiftパッケージです。OCR自体や文章の意味解析は行わず、認識結果を読みやすい順番へ並べる処理だけを担当します。
できること
- 横書きは上から下、同じ行では左から右
- 縦書きは右の列から左へ、同じ列では上から下
- ページごとに横書きか縦書きかを自動判定
- 文字の大きさに合わせて行と列の判定幅を調整
このパッケージがしないこと
このパッケージは、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
ページごとに横書きか縦書きかを自動判定 · 文字の大きさに合わせて行と列の判定幅を調整