検索する用語がよくわからないので、私のタイトルはファンキーです...これが私が持っているワークフローです:
- 半構造化文書はスキャンしてファイルに保存します。ファイルは OCR でテキストに変換されます。
- テキストは Python オブジェクトに解析されます
- オブジェクトは、使用するために (SQL、JSON などに) シリアル化されます。
ドキュメントは次のような構造です。
HEADER 何とか、ページ ###
何とか
ゴミ文字…
1. 質問文...
今まで続けた。A. 選択テキスト...
adsadsf。B. 別の選択肢...
2. 別の質問...
質問と選択肢を抽出する必要があります。問題は、テキストが OCR 出力であるため、'2' -> 'Z' のような奇妙な置換が時折あり、通常の正規表現が役に立たなくなることです。私は Levenshtein モジュールを試してみましたが、役に立ちましたが、予想される編集距離について事前に知っておく必要があります。
パーサーを作成しようとしているかどうかわかりません。レクサー?他の何か?これは、あらゆる種類の興味深いが無関係な道に私を導きました. ガイダンスをいただければ幸いです。また、テキストは通常、特定の技術分野のものであるため、一般的なスペル チェック ツールはあまり役に立ちません。
文書の構造に関しては、改行やインデントなどの明確な視覚的パターンはありませんが、「質問」は通常行の先頭にあるという事実を除いては. ドキュメントのがらくたは、実際の行頭の前に文字を表示させる可能性があります。これは、r'^[0-9]+' の行に沿った何かが確実に機能しないことを意味します。
「質問」は常にint、ピリオド、スペースで始まりますが。OCR は、他の文字を置き換えたり、文字をスキップしたりできます。これは、Tesseract や Cunieform ではそれほど問題ではなく、紙の文書の質が悪いためです。
#注: 問題のプロジェクトでは、ソリューションのコーディングに時間を費やすよりも、OCR されたテキストを人間が準備する方がよいと判断されました。しかし、私はまだ良いポインタが大好きです。