Jawa

Tutorial Tess4J dengan Maven Dan Java

Tutorial Tess4J dengan Maven Dan Java
Pada zaman sekarang ketika data semakin berkembang, orang-orang yang berurusan dengan data setiap hari bekerja kebanyakannya dengan data teks tidak berstruktur. Menganalisis semua data ini pada kadar yang lebih pantas diperlukan dan berkali-kali, juga penting. Kadang-kadang, kita menghadapi masalah mengekstrak data dari fail PDF. Mengekstrak data teks dari fail PDF juga tidak praktikal dan tugas manual yang besar juga.

Bukankah lebih keren jika kita mempunyai beberapa pakej terprogram yang dapat menerima beberapa fail PDF dan mengembalikan teks yang dikandungnya?  Ternyata kita mempunyai perpustakaan untuk melakukan begitu sahaja.  Tesseract adalah kerangka sumber terbuka yang ditulis dalam C ++ yang membolehkan kita bekerja dengan gambar PNG, gambar JPG dan fail PDF dan mengembalikan teks yang dikandung fail sehingga kita dapat menggunakan teks itu seperti yang kita mahukan.

Dalam pelajaran ini tentang Tesseract with Java and Maven, kita akan melihat bagaimana kita dapat mengembangkan aplikasi Java sederhana yang menerima file PDF dan mengembalikan teks yang dikandungnya dengan perkhidmatan Tesseract OCR.  Kami juga akan melihat mengapa Tesseract begitu berjaya. Salah satu sebab Tesseract menjadi pakej yang begitu berjaya adalah kerana ia disokong oleh Google sendiri.

Untuk mengikuti pelajaran ini, penting untuk memasang Tesseract OCR Engine pada sistem anda. Pergi ke repo Github rasmi untuk mengikuti arahan pemasangan. Langsung dari repo GitHub, "Tesseract pada awalnya dikembangkan di Hewlett-Packard Laboratories Bristol dan di Hewlett-Packard Co, Greeley Colorado antara tahun 1985 dan 1994, dengan beberapa perubahan lagi yang dibuat pada tahun 1996 ke port ke Windows, dan beberapa C ++ 1998. Pada tahun 2005 Tesseract dibuka oleh HP. Sejak tahun 2006 ia dibangunkan oleh Google."

Ketergantungan Maven

Kami akan mulakan dengan membuat projek Java sederhana yang berdasarkan Maven dan mengandungi ketergantungan maven berikut:


bersih.sumber kekuatan.tess4j
tess4j
4.3.0

Ini adalah kebergantungan Maven yang disediakan oleh projek pembungkus yang boleh anda rujuk di sini untuk mendapatkan lebih banyak pemahaman. Dari laman web, Tess4J hanya digambarkan sebagai pembungkus Java JNA untuk Tesseract OCR API.

Struktur Projek

Kami mempunyai projek yang sangat mudah dengan fail kod sumber tunggal. Struktur projek semasa akan kelihatan seperti ini:

Seperti yang telah kami sebutkan, kami mempunyai satu fail kod sumber yang akan kami gunakan. Kami mungkin meletakkan fail PDF di folder sumber sedikit kemudian untuk menunjukkan membaca fail PDF dan mengekstrak teks daripadanya.

Membina objek Tesseract

Sebaik sahaja kita mempunyai contoh kelas kod sumber di mana kita boleh memulakan (seperti yang ditunjukkan dalam struktur projek di bahagian terakhir), kita boleh mula menambahkan beberapa kod padanya. Setakat ini, ia adalah kelas kosong:

pakej com.linuxhint.tess4j;
kelas awam Tess4JDemo

Seperti yang telah kita bincangkan mengenai Tesseract sebelumnya, Tesseract dapat digunakan untuk mengekstrak teks dari dokumen seperti dokumen PDF. Untuk melakukan ini, kita harus melatih perpustakaan Tesseract tentang bagaimana dokumen disusun dan teks apa yang boleh dikandungnya.

Selain daripada ini, kerana Tesseract menyokong kira-kira 37 bahasa, anda harus secara terang-terangan memberitahu Tesseract mengenai bahasa mana yang sedang kita baca sekarang (jika maklumat itu benar-benar tersedia untuk kita).

Kami akan menentukan kaedah Java yang mudah untuk Tesseract:

Tesseract getTesseract statik peribadi ()

Di dalam kaedah ini, kita dapat membuat contoh baru Tesseract dari perpustakaan Maven yang kita tambahkan sebelumnya:

Tesseract instance = Tesseract baru ();

Untuk menjelaskannya, berikut adalah pernyataan import yang kami ada untuk contoh di atas:

jaring import.sumber kekuatan.tess4j.Tesseract;

Seterusnya, kami akan menambahkan beberapa sifat untuk contoh ini seperti di mana data latihan untuk perpustakaan ini dapat dijumpai. Ini sangat penting kerana tanpa menetapkan jalan untuk data latihan, Tesseract dapat memberikan hasil yang sangat tidak tepat. Nasib baik, data latihan untuk Tesseract disertakan dengan pemasangannya, jadi yang perlu anda lakukan ialah melihat tempat yang betul. Inilah cara kami menetapkan laluan data latihan:

contoh.setDatapath ("/ usr / local / Cellar / tesseract / 4.0.0 / kongsi / tessdata ");
contoh.setLanguage ("eng");

Semasa kami menggunakan Macintosh untuk tutorial ini, jalan data kami kelihatan seperti di atas. Selain jalan data latihan, saya juga memberikan Tesseract maklumat yang akan kami gunakan Bahasa Inggeris bahasa.
Selanjutnya kita akan memberitahu Tesseract bahawa output yang kita perlukan adalah dalam format sesuatu yang disebut sebagai HOCR format. Pada dasarnya, format HOCR adalah format berasaskan XML ringkas yang mengandungi dua perkara:

  1. Dokumen teks teks akan mengandungi
  2. Koordinat x dan y teks itu pada setiap halaman. Ini bermaksud bahawa dokumen DF dapat dilukis dengan tepat dengan cara yang sama kembali dari output HOCR

Kita boleh mengaktifkan format HOCR seperti:

contoh.setHocr (benar);

Akhirnya, saya dapat mengembalikan contoh yang kami buat di atas. Berikut adalah kod sumber lengkap kaedah yang baru kami tentukan di sini:

Tesseract getTesseract statik peribadi ()
Tesseract instance = Tesseract baru ();
contoh.setDatapath ("/ usr / local / Cellar / tesseract / 4.0.0 / kongsi / tessdata ");
contoh.setLanguage ("eng");
contoh.setHocr (benar);
contoh pulangan;

Menggunakan Tesseract

Anda mungkin tidak mempercayainya tetapi menyiapkan objek Tesseract semudah itu. Kita dapat menggunakannya sekarang dengan definisi ringkas dalam fungsi utama:

utama kekosongan statik awam (String [] args)
Tesseract tesseract = getTesseract ();

Bolehkah anda meneka apa yang tinggal sekarang? Satu-satunya perkara yang perlu kita lakukan sekarang ialah menyediakan fail untuk Tesseract yang dapat dihuraikan dan dibaca Teksnya. Sekarang kita dapat, dengan mudah mengambil dokumen PDF untuk membacanya tetapi kedengarannya agak teks. Mengapa kita tidak mencuba gambar dengan segera?

Untuk pelajaran ini, kami membuat gambar yang sangat mudah yang akan kami gunakan:

Setelah anda mempunyai gambar ini (atau gambar pilihan anda yang lain), kami dapat melengkapkan kaedah utama kami sehingga akhirnya kami dapat menghuraikan gambar yang dipilih:

utama kekosongan statik awam (String [] args) melemparkan TesseractException
Tesseract tesseract = getTesseract ();
Fail fail = Fail baru ("/ Pengguna / shubham / Desktop / tess4j.jpg ");
Hasil rentetan = tesseract.doOCR (fail);
Sistem.keluar.println (hasil);

Sekiranya kita melihat dengan teliti, tidak ada perkara ajaib yang berlaku di sini. Itulah kehebatan pembungkus ringkas ini untuk perpustakaan Tesseract yang kami sediakan.

Sekarang kami sudah bersedia untuk menjalankan program di atas. Anda boleh menjalankannya untuk melihat output pelik dalam format XML. Sekiranya anda menghadapi masalah untuk memahami outputnya, cukup beri komen mengenai sifat tempat kami mengaktifkan output HOCR. Sebaik sahaja anda melakukannya, anda akan melihat output ringkas seperti:

Nota ringkas yang cuba elakkan gambar PNG dan gunakan gambar JPEG sebaliknya jika anda bekerja dengan gambar sama sekali. Ini kerana Tesseract sangat teruk membaca gambar PNG kerana teknik mampatannya.

Batasan Enjin Tesseract OCR

Menurut FAQ halaman Tesseract itu sendiri, "Tesseract adalah mesin OCR dan bukannya program yang disertakan sepenuhnya seperti perisian OCR komersial seperti Nuance's Omnipage. Ini pada asalnya bertujuan untuk berfungsi sebagai komponen dari program atau sistem lain.

Walaupun Tesseract berfungsi dari baris perintah, untuk dapat digunakan oleh pengguna rata-rata mesin mesti disatukan ke dalam program atau antaramuka lain, seperti FreeOCR.bersih, WeOCR atau OCRpous. Tanpa penyatuan ke dalam program seperti ini, Tesseract tidak mempunyai analisis susun atur halaman, tidak ada format output dan tidak ada antara muka pengguna grafik (GUI). "

Sekiranya kita melihat batasan di atas, batasan di atas juga diselesaikan oleh perpustakaan Tess4J dengan menyediakan pembungkus Java JNA yang ringkas tetapi berkesan di atas perpustakaan C ++ yang dapat digunakan secara harfiah di mana saja.

Kesimpulannya

Dalam pelajaran ringkas mengenai Tesseract dan Java ini, kami membuat contoh mesin Tesseract OCR yang sangat mudah yang membolehkan kami membaca teks dari pelbagai fail format seperti fail PDF dan gambar. Ini adalah kemahiran yang sangat penting untuk dimiliki kerana membaca teks dari fail seperti PDF dan gambar adalah langkah pertama yang perlu anda lakukan jika anda ingin menggunakan teknik Pemprosesan Bahasa Asli (NLP) pada format data ini.

Fakta bahawa Tess4J tersedia sangat mengagumkan kerana dengan cara ini, kita benar-benar dapat menggunakan perpustakaan C ++ dalam lingkungan yang sangat sederhana yang sukar dan sukar untuk digunakan untuk. Sudah tentu, semua kod sumber pelajaran boleh didapati di Github. Sila kongsi maklum balas anda dengan bebas mengenai pelajaran di Twitter dengan @linuxhint dan @sbmaggarwal (itu saya!).

5 Kad Tangkap Permainan Teratas
Kita semua telah melihat dan menyukai streaming permainan permainan di YouTube. PewDiePie, Jakesepticye, dan Markiplier hanyalah beberapa pemain terat...
Cara Membangunkan Permainan di Linux
Satu dekad yang lalu, tidak banyak pengguna Linux akan meramalkan bahawa sistem operasi kegemaran mereka suatu hari nanti akan menjadi platform permai...
Port Sumber Terbuka Mesin Permainan Komersial
Rekreasi enjin permainan sumber terbuka dan bebas platform boleh digunakan untuk bermain lama dan juga beberapa tajuk permainan yang baru-baru ini. Ar...