Saya tidak yakin terminologi apa yang harus dicari, jadi judul saya funky... Inilah alur kerja yang saya dapatkan:
- Dokumen semi-terstruktur dipindai ke file. File-file tersebut OCR untuk dikirimi teks.
- Teks diurai menjadi objek Python
- Objek diserialkan (ke SQL, JSON, apa pun) untuk digunakan.
Dokumen-dokumen tersebut memiliki struktur seperti ini:
KEPALA bla bla, Halaman ###
bla
Teks sampah...
1. Teks Pertanyaan... berlanjut hingga sekarang. A. Teks pilihan...
iklanadsf. B.Pilihan Lain...
2. Pertanyaan Lain...
Saya perlu mengekstraksi pertanyaan dan pilihan. Masalahnya adalah, karena teksnya adalah keluaran OCR, terkadang ada substitusi aneh seperti '2' -> 'Z' yang membuat ekspresi reguler biasa tidak berguna. Saya telah mencoba modul Levenshtein dan ini membantu, tetapi memerlukan pengetahuan sebelumnya tentang jarak edit yang diharapkan.
Saya tidak tahu apakah saya ingin membuat parser? seorang lexer? sesuatu yang lain? Hal ini telah membawa saya ke berbagai jalur yang menarik namun tidak relevan. Bimbingan akan sangat dihargai. Oh, juga, teksnya umumnya berasal dari domain teknis tertentu, jadi alat ejaan umum tidak begitu membantu.
Mengenai struktur dokumen, tidak ada pola visual yang jelas -- seperti jeda baris atau lekukan -- kecuali fakta bahwa "pertanyaan" biasanya dimulai dengan sebuah baris. Sampah pada dokumen dapat menyebabkan karakter muncul sebelum awal baris sebenarnya, yang berarti bahwa sesuatu di sepanjang baris r'^[0-9]+' tidak berfungsi dengan baik.
Padahal "pertanyaan" selalu dimulai dengan int, titik, dan spasi; OCR dapat mengganti karakter lain atau melewatkan karakter. Ini bukan masalah Tesseract atau Cunieform, melainkan kualitas dokumen kertas yang buruk.
#Catatan: untuk proyek yang dimaksud, diputuskan bahwa lebih baik menyiapkan manusia untuk teks OCR daripada menghabiskan waktu untuk mengkodekan solusi. Namun, saya tetap menyukai petunjuk yang bagus.