Membuat Fungsi Konversi “PDF to Text” dengan Fitur OCR (Optical Character Recognition) Google Vision API

Debrian R. Saragih
MahasiswaOnline
Published in
5 min readMar 25, 2020

Selamat malam Sobat semua, saya menulis artikel ini dalam rangka membagikan wawasan untuk sobat yang sedang belajar salah satu fitur kecerdasan buatan dari Google yaitu Google Vision. Google Vision sendiri merupakan alat bantu yang disediakan google dalam bentuk API untuk tujuan utama yaitu mendeteksi gambar dan menelaah isi gambar (misalnya wajah, benda, logo, bangunan, dll). Fitur ini dapat dimanfaatkan pula untuk mengkonversi file PDF yang didalamnya terdapat gambar menjadi text. Fitur ini biasanya disebut dengan OCR (Optical Character Recognition). Nah, kebetulan saya ada kasus yang mengharuskan melakukan konversi file pdf menjadi text. Untuk fungsi PDF to Text sendiri sebenarnya banyak di internet, namun belum memiliki fungsi OCR tadi.

Percayalah, Anda tidak perlu berlelah-lelah mencari package PDF to Text dengan fungsi OCR, karena fitur ini kebanyakan disediakan sudah dalam bentuk built-in di website yang khusus menyediakan fasilitas konverter, atau built-in dalam software PDF reader. Beruntungnya saya akan membagikan mekanisme PDF to Text ini dengan menggunakan bantuan Google Vision beserta source code di PHP. Baik kan?

Sekedar informasi, waktu yang saya habiskan untuk research mencari fungsi PDF to Text dengan OCR sekitar 1 minggu. Ada 2 sumber website yang menuntun saya akhirnya menemukan mekanisme tersebut yaitu:

  1. https://github.com/googleapis/google-cloud-php
  2. https://stackoverflow.com/questions/56176858/google-vision-for-pdf
  3. https://cloud.google.com/vision/docs/pdf

Persiapan

Sebelum memulai, ada beberapa hal yang perlu Anda siapkan yaitu:

  1. Akun Google dan Google cloud console project. Anda dapat melihatnya di sini bagaiamana cara melakukan setup Google Cloud Console Project khususnya untuk mengaktifkan API Google Vision.
  2. API key dari Google cloud console project Anda. Klik di sini untuk melihat cara mendapatkan API key Anda.
  3. Persiapan project di PHP (terinstall composer) atau Laravel jika kamu menggunakan Framework.
  4. File PDF yang akan diujicoba. Dalam hal ini saya menggunakan file pdf dari PPATK yaitu di alamat http://www.ppatk.go.id/backend/assets/uploads/20190314161818.pdf

Mekanisme Konversi Pdf ke Text

Untuk menggunakan alat bantu Google Vision ini sebenarnya tidak gratis. Google sendiri menetapkan batasan untuk pengguna free dan juga beberapa kesulitan tersendiri bagi pengguna pemula yaitu

  1. Hanya bisa maksimum 2000 halaman pdf, jika melebihi maka akan error.
  2. File pdf harus terlebih dahulu diupload ke storage cloud google baru bisa dilakukan konversi.
  3. Hasil konversi file pdf dalam bentuk JSON sehingga kita harus melakukan parsing secara manual.

Ketentuan tersebut dapat Anda lihat di sini. Sedangkan untuk mengakses API Google jika sudah melebihi 1000 request/bulan akan dikenakan tambahan biaya sebagai berikut:

https://cloud.google.com/vision/pricing

Mekanisme konversi PDF ke Text dengan OCR memang agak repot karena seperti yang sudah disebutkan sebelumnya bahwa google mewajibkan file pdf yang akan dikonversi menggunakan alamat di google storage, tidak bisa dari local komputer masing-masing. Selain itu, karena google vision menggunakan kecerdasan buatan untuk mendeteksi text dalam gambar, maka hasil output berupa file JSON yang jumlahnya bisa banyak tergantung banyaknya halaman.

Alur konversi PDF ke Text dengan Google Vision API

Kalau dari dokumentasi officialnya, alurnya dapat digambarkan pada gambar di bawah ini. Image dapat diganti dengan jenis file lainnya seperti PDF, karena pada dasarnya fungsi OCR adalah menerjemahkan gambar menjadi text.

https://cloud.google.com/functions/docs/tutorials/ocr

Sesuai alur pada gambar di atas, maka proses kodenya saya jabarkan sebagai berikut atau Anda bisa lihat contoh codenya pada alamat berikut https://cloud.google.com/vision/docs/pdf:

  1. Upload file PDF dari local komputer ke bucket google storage yang sudah dibuat.

2. Konversi file PDF menjadi Text lalu proses parsing JSON menjadi Raw Text

Fungsi ini dapat dijabarkan dalam 3 part yaitu sebagai berikut:

Pada part 1, kita membuat class Feature yang akan diset jenis feature apa yang akan digunakan untuk mendeteksi file. Jenis feature ini dapat anda pilih sesuai dengan tujuan konversinya. Untuk mendeteksi dokumen, kita menggunakan feature types “DOCUMENT_TEXT_DETECTION”.

https://cloud.google.com/vision/docs/file-small-batch
Fungsi Part 1

Pada part 2, kita akan mengirim request dari berbagai parameter yang sudah diset sebelumnya, yaitu feature types, lokasi input file, dan lokasi output file serta nama file output JSON.

Fungsi Part 2

Pada part 3, hasil dari konversi akan disimpan dalam variable Objects dimana objects tersebut sudah memuat informasi raw text namun masih dalam bentuk JSON. Dengan menggunakan looping, kita hanya akan mengambil informasi yang penting dan menyimpannya ke dalam variable $return_data sebagai hasil akhir, lalu mengembalikan nilai tersebut untuk digunakan pada fungsi yang lain sesuai dengan kebutuhan Anda.

Fungsi Part 3

3. Memanggil Fungsi yang sudah dibuat

Setelah proses upload dan fungsi konversi dibuat, maka kita dapat memanggil fungsi tersebut dengan input parameter alamat file pdf yang sudah di upload ke Google Storage yaitu “gs://debrian-bucket/20190314161818.pdf” dan lokasi tujuan penyimpanan output file JSON yaitu “gs://debrian-bucket/”. Folder tersebut (bucket) sebelumnya sudah harus anda buat dengan mengakses melalui google console, pada menu storage.

Hasil Ujicoba Pdf to Text

Hasil ujicoba yang saya lakukan telah berhasil mengubah file PDF menjadi raw text seperti pada gambar di bawah ini. Hasil raw text ini sangatlah berguna untuk diproses selanjutnya, misalnya untuk melakukan text mining yaitu pengelompokan dari data yang tidak terstruktur menjadi data yang lebih terstruktur.

Raw Data hasil konversi file PDF

Raw text tadi dapat saya parsing dengan algoritma yang saya buat untuk mengambil data yang terdapat diantara dua text identifier lalu menyimpannya ke dalam database. Misalnya data Nama saya dapatkan dengan mengambil tag awal “Nama :” dan tag akhir “Nama Alias:”.

Hasil Raw Text tersimpan di Database

Bonus!

Jika Anda mau mencoba fitur menarik lainnya yaitu Image Detection dengan Google Vision, saya menyarankan cara yang mudah yaitu menggunakan package dari Wapnen di github berikut:

Contoh gambar yang akan dideteksi
Fungsi untuk mendeteksi Gambar
Hasil output deteksi gambar (Harus dilakukan parsing)

Apabila ada saran, kritik dan pertanyaan dapat disampaikan melalui kotak komentar di bawah. Sekian dan terima kasih.

--

--