Tiada muat naik, 100% setempat, tiada akaun

Artikel

Tingkatkan ketepatan OCR: betulkan imej sebelum mengenal pasti teks

OCR hanya sebaik imej yang dibekalkan kepadanya. Imbasan yang condong, berkontras rendah dan berbising menghasilkan teks yang kacau tidak kira betapa baiknya enjin tersebut. Berikut ialah perkara yang benar-benar membuat perbezaan, mengikut urutan yang perlu dilakukan, semuanya berjalan secara tempatan dalam penyemak imbas anda.

Mengapa OCR sukar menangani imbasan sebenar

Enjin OCR seperti Tesseract dilatih menggunakan teks yang bersih, mendatar dan berkontras tinggi. Ia membahagikan halaman kepada baris, baris kepada perkataan, dan perkataan kepada bentuk aksara, kemudian memadankan setiap bentuk dengan model yang telah dilatih. Imbasan dunia sebenar mematahkan andaian tersebut: halaman condong beberapa darjah, pencahayaan tidak sekata, resolusi rendah, dan tepi pelapik pengimbas atau halaman bertentangan menambah hingar gelap. Setiap masalah ini menyebabkan langkah pembahagian baris dan aksara membuat teka-teki yang salah, dan pembahagian yang salah membawa kepada aksara yang salah. Penyelesaiannya jarang berupa enjin berbeza: ia adalah menyediakan imej supaya andaian enjin dapat terpenuhi. Dalam amalan, prapemprosesan memberi kesan lebih besar kepada ketepatan berbanding pilihan enjin OCR.

Diagram saluran pra-pemprosesan OCR: imbasan melalui langkah orientasi, pembetulan condong, pemangkasan dan skala kelabu sebelum mencapai enjin pengecaman.

Mulakan dengan resolusi: sasarkan 300 DPI

Tesseract berfungsi paling baik pada sekitar 300 DPI untuk teks badan biasa. Di bawah kira-kira 200 DPI, strok setiap glif menjadi kabur bercampur dengan jirannya dan ketepatan merosot dengan ketara. Jika anda mengawal imbasan, tetapkan pengimbas kepada 300 DPI sebelum yang lain kerana ia merupakan pilihan tunggal yang paling tinggi kesannya. Jika anda hanya mempunyai imej beresolusi rendah, peningkatan skala tidak mencipta butiran yang tidak pernah ditangkap, tetapi peningkatan skala sederhana masih boleh membantu enjin memisahkan aksara yang bersentuhan dengan memberikan pembahagian lebih banyak piksel untuk diproses. Cetakan sangat kecil mendapat manfaat daripada 400 hingga 600 DPI; di luar itu anda hanya membesarkan fail tanpa peningkatan ketepatan. Apabila sumber adalah PDF, rasterkan setiap halaman kepada imej pada DPI sasaran dahulu, kemudian jalankan OCR pada imej tersebut.

Pastikan orientasi betul

Jika halaman diputar 90, 180, atau 270 darjah, enjin membaca secara sisi atau terbalik dan mengembalikan omong kosong. Tesseract mempunyai laluan pengesanan orientasi dan skrip (OSD) yang boleh meneka putaran, tetapi ia tidak boleh dipercayai pada teks jarang, borang, atau halaman yang didominasi imej. Memutar halaman ke kedudukan tegak sendiri menghapuskan andaian tersebut. Langkah ini tidak merosotkan kualiti dan serta-merta: memutar dengan gandaan 90 darjah hanya memetakan semula piksel sedia ada ke kedudukan baru, tanpa kos kualiti dan tanpa pensampelan semula. Lakukan ini sebelum meluruskan, kerana luruskan mengandaikan teks sudah lebih kurang mendatar.

Luruskan: betulkan condong kecil

Walaupun condong 2 hingga 3 darjah, jenis yang berlaku apabila halaman dimasukkan sedikit serong, menjejaskan OCR: langkah mencari baris mendatar memisahkan satu baris teks kepada dua, atau menggabungkan dua baris menjadi satu. Pelurusan mengukur sudut dominan garis teks (lazimnya menggunakan analisis profil unjuran atau Hough) dan memutar halaman kembali ke kedudukan rata. Berbeza dengan putaran 90 darjah, pelurusan adalah putaran sudut sewenang-wenang yang kecil, jadi ia mensampling semula piksel dan menambahkan sedikit kekaburan. Pertukaran ini hampir selalu berbaloi kerana baris yang rata dapat dibahagikan dengan bersih dan peningkatan ketepatan jauh melebihi sedikit pelunakan. Luruskan selepas membetulkan orientasi dan sebelum memotong.

Sebelum dan selepas pembetulan condong: halaman teks yang condong beberapa darjah di sebelah kiri, diluruskan mendatar di sebelah kanan supaya baris-baris berada dalam kedudukan mendatar.

Potong ke teks dan buang hingar

Apa-apa yang bukan teks yang anda inginkan adalah hingar yang boleh disalah baca oleh enjin: sempadan gelap pelapik pengimbas, sebahagian halaman bertentangan, sudut berkleip, jari, atau lubang penebuk. Memotong ke blok teks sahaja menghapuskan sasaran palsu tersebut, yang kedua-duanya meningkatkan ketepatan dan mempercepatkan pengecaman kerana enjin mempunyai kawasan yang lebih kecil untuk dianalisis. Untuk dokumen berbilang lajur, memotong (atau menjalankan OCR satu lajur pada satu masa) juga menghalang enjin daripada membaca terus merentasi celah dan mencampur aduk dua lajur menjadi satu baris yang kacau. Potong selepas meluruskan supaya kandungan duduk tegak dalam bingkai.

Kontras, skala kelabu dan cara penduaan benar-benar berfungsi

OCR akhirnya berjalan pada imej binari: setiap piksel diputuskan sama ada dakwat atau kertas. Tesseract melakukan ini secara dalaman menggunakan kaedah Otsu, yang memilih ambang global tunggal daripada histogram imej. Ini berfungsi baik apabila halaman mempunyai pencahayaan sekata dan kontras yang baik, dan gagal apabila bayangan atau latar belakang berwarna menjadikan satu sudut lebih gelap daripada jangkaan ambang. Kemenangan yang boleh dipercayai ialah menukar kepada skala kelabu supaya warna latar tidak mengelirukan ambang, dan meratakan pencahayaan supaya seluruh halaman berada di satu sisi ambang. Meningkatkan kontras secara sederhana membantu teks yang samar. Apa yang biasanya memberi kesan sebaliknya ialah penduaan manual yang keras: jika anda menentukan ambang kepada hitam putih tulen dengan nilai potongan yang salah, anda menghapuskan strok samar yang laluan enjin sendiri akan kekalkan. Biarkan enjin melakukan penduaan, dan berikan imej skala kelabu yang sekata sebagai permulaan. Sunasty menawarkan skala kelabu untuk PDF; untuk penalaan kontras yang halus penyunting desktop masih lebih baik, tetapi pencahayaan yang sekata semasa mengimbas lebih penting daripada mana-mana peluncur.

Pilih bahasa yang betul dan semak output

Tesseract memuatkan fail data terlatih yang berasingan bagi setiap bahasa dan skrip. Menjalankan model Bahasa Inggeris pada teks Perancis atau Greek menghasilkan ralat yang boleh dielakkan, terutamanya pada aksara beraksen atau bukan Latin, jadi pilih bahasa yang sepadan dengan dokumen. Akhirnya, layani output OCR sebagai draf, bukan jawapan muktamad: enjin tidak mempunyai cara untuk mengetahui bahawa nama dieja dengan betul atau bahawa 0 bukan O. Semak semula nombor, nama khas, dan apa-apa yang penting dari segi undang-undang atau kewangan. Untuk jadual dan susun atur berbilang lajur, jangkakan untuk membetulkan struktur secara manual kerana OCR mengembalikan aliran teks yang dikenal pasti, bukan susun atur yang dibina semula.

Alat dalam artikel ini

Soalan lazim

Adakah peningkatan skala imbasan yang kabur meningkatkan OCR?

Tidak banyak dengan sendirinya. Peningkatan skala tidak dapat memulihkan butiran yang tidak pernah ditangkap oleh imbasan, jadi imej 100 DPI yang kabur tetap kabur. Peningkatan skala sederhana boleh membantu enjin memisahkan aksara yang bersentuhan dengan memberikan pembahagian lebih banyak piksel, tetapi mengimbas semula pada 300 DPI jauh lebih berkesan berbanding sebarang jumlah peningkatan skala.

Perlukah saya menukar imej kepada hitam putih tulen dahulu?

Biasanya tidak. Tesseract melakukan penduaan secara dalaman dengan kaedah Otsu, dan ambang keras manual dengan nilai potongan yang salah menghapuskan strok samar yang akan dikekalkan oleh enjin. Tukar kepada skala kelabu dan ratakan pencahayaan, kemudian biarkan enjin memilih ambangnya sendiri.

Teks saya berada di sebelah. Adakah OCR akan memutarnya secara automatik?

Kadang-kadang. Tesseract mempunyai laluan pengesanan orientasi, tetapi ia tidak boleh dipercayai pada borang, teks jarang, atau halaman banyak imej. Memutar halaman ke kedudukan tegak sendiri sebanyak 90, 180, atau 270 darjah tidak merosotkan kualiti dan menghapuskan andaian, jadi ia merupakan pilihan yang lebih selamat.

Adakah mana-mana operasi ini memuat naik dokumen saya?

Tidak. Pemutaran, pelurusan, pemotongan, penukaran kepada skala kelabu, dan OCR itu sendiri semuanya berjalan dalam penyemak imbas anda. OCR menggunakan binaan WebAssembly Tesseract, dan data bahasa yang dilatih dimuat turun sekali dan disimpan cache. Fail anda tidak pernah meninggalkan peranti.

Sumber