Mengekstrak Teks dari PDF: Lapisan Teks dan OCR
Sebagian PDF menyerahkan teksnya dalam sedetik; sebagian lain hanya berisi gambar halaman dan memerlukan OCR. Panduan ini menjelaskan cara teks disimpan dalam PDF, mengapa teks hasil ekstraksi bisa kacau atau urutannya salah, cara OCR membaca halaman pindaian dan apa yang memengaruhi akurasinya, serta apa yang perlu diperiksa sebelum Anda mengandalkan hasilnya.
Dua Jenis Halaman PDF
Halaman PDF dapat memuat teks dengan dua cara. Sebagian besar PDF yang diekspor dari pengolah kata, browser, atau program desain memiliki lapisan teks: setiap karakter disimpan sebagai kode dalam sebuah font dan ditempatkan di posisi tertentu pada halaman. Halaman hasil pindaian atau foto berbeda. Halaman itu adalah satu gambar utuh, dan bagi perangkat lunak, huruf di dalamnya hanyalah piksel.
| Jenis halaman | Cara dibuat | Hasil ekstraksi |
|---|---|---|
| PDF teks | Diekspor atau dicetak ke PDF dari aplikasi | Karakter yang tersimpan, biasanya persis |
| PDF pindaian | Pemindai, kamera ponsel, atau faks | Tidak ada apa-apa sampai OCR membaca gambarnya |
| Pindaian yang bisa dicari | Pindaian yang belakangan ditambahi lapisan teks OCR | Hasil OCR saat itu, beserta kesalahannya |
| Teks yang diubah menjadi outline | Teks diubah menjadi bentuk di program desain | Tidak ada karakter; hanya OCR yang bisa membacanya |
Penampil PDF biasanya menunjukkan jenisnya. Jika Anda bisa memilih satu kata atau menemukannya dengan kotak pencarian, halaman itu punya lapisan teks. Jika seret memilih seluruh halaman sebagai satu blok, atau pencarian tidak menemukan apa pun, halaman itu berupa gambar. Satu file bisa berisi keduanya, misalnya laporan ketikan dengan lampiran hasil pindaian.
Cara Kerja Ekstraksi Lapisan Teks
PDF tidak menyimpan paragraf. PDF menyimpan potongan karakter, masing-masing dengan font dan posisi, sering kali satu kata atau beberapa huruf sekaligus, dalam urutan yang dipilih program pembuat file. Alat ekstraksi membaca potongan ini dan menyusun kembali baris berdasarkan posisinya.
Alat PDF ke Teks LeedyBox membaca potongan tersebut dengan PDF.js, mesin PDF milik Firefox. Alat ini memulai baris baru saat posisi vertikal berubah lebih dari 5 poin (sekitar 1,8 mm) dan, jika tidak, menyambung potongan dengan spasi; setiap halaman pada hasil diawali penanda seperti --- Halaman 1 ---. Sebagian besar dokumen satu kolom hasilnya mudah dibaca, dengan beberapa efek samping:
- Kata yang tersimpan dalam beberapa potongan, misalnya karena pengaturan jarak huruf, bisa muncul dengan spasi di tengahnya.
- Kolom, kotak samping, dan keterangan gambar muncul sesuai urutan penyimpanannya, yang bisa berbeda dari urutan membaca.
- Superskrip, tanda catatan kaki, dan teks lain yang lebih tinggi atau lebih rendah dari baris bisa menjadi baris tersendiri.
- Header, footer, dan nomor halaman ikut menjadi bagian teks setiap halaman.
Mengapa Teks Hasil Ekstraksi Bisa Kacau
Di dalam PDF, teks disimpan sebagai kode glyph dari sebuah font, bukan sebagai karakter Unicode. Untuk mengubah kode kembali menjadi huruf, file memerlukan tabel pemetaan. PDF yang dibuat dengan baik menyertakan tabel ToUnicode untuk setiap font, dan font dengan pengodean standar bisa didekode tanpa tabel itu. Masalah muncul saat font disematkan sebagai subset dengan penomoran sendiri tanpa pemetaan: kodenya tidak berarti apa pun di luar file, sehingga ekstraksi menghasilkan huruf yang salah, simbol, atau kotak kosong meskipun halaman tampak normal.
Font Tionghoa, Jepang, dan Korea sering memakai peta karakter bawaan (CMap) seperti Adobe-Japan1 atau Adobe-Korea1 alih-alih tabel sendiri. Alat LeedyBox memuat CMap ini bersama PDF.js, sehingga banyak dokumen Asia Timur yang dirusak alat sederhana bisa dibaca dengan benar. Penyebab umum lainnya adalah ligatur seperti fi yang disimpan sebagai satu glyph, font Type 3 yang hurufnya digambar sebagai bentuk dan sering tanpa pemetaan, serta PDF yang pengodeannya sengaja diacak agar sulit disalin.
Jika halaman punya lapisan teks, alat menggunakannya, meskipun teksnya kacau, dan tidak menjalankan OCR pada halaman itu. Untuk membaca halaman seperti itu dengan OCR, ubah menjadi gambar dengan PDF ke JPG lalu baca gambarnya dengan Gambar ke Teks (OCR).
Kapan Alat LeedyBox Memakai OCR
Alat memutuskan halaman demi halaman. Jika lapisan teks sebuah halaman berisi kurang dari 15 karakter, halaman itu digambar sebagai gambar dengan ukuran dua kali normal, sekitar 144 piksel per inci, lalu dibaca Tesseract.js dalam bahasa yang dipilih di "Bahasa OCR" bersama bahasa Inggris. Karena itu, dalam dokumen yang berisi halaman ketikan dan halaman pindaian, halaman ketikan dibaca persis dan hanya pindaian yang melewati OCR.
Halaman pindaian dengan beberapa karakter dari stempel atau nomor halaman tetap dianggap kosong dan melewati OCR. Sebaliknya, pindaian yang sudah punya lapisan teks berisi 15 karakter atau lebih tidak melewati OCR, sehingga lapisan OCR berkualitas buruk dari pemindai dikeluarkan apa adanya. Mesin OCR dan data bahasanya diunduh dari leedybox.com saat OCR pertama kali berjalan, sehingga halaman pindaian pertama butuh waktu lebih lama. PDF Anda dibaca di browser dan tidak diunggah.
Cara OCR Mengubah Piksel Menjadi Teks
OCR bekerja bertahap. Mesin pertama-tama mengubah gambar menjadi hitam putih dan mencari blok teks, baris, dan kata, langkah yang disebut segmentasi halaman. Kemudian jaringan saraf yang dilatih untuk satu bahasa atau aksara membaca setiap baris dan memilih urutan karakter yang paling mungkin, dibantu daftar kata bahasa tersebut. Hasilnya adalah tebakan terbaik, bukan salinan: bentuk yang mirip seperti 0 dan O, 1, l, dan I, atau rn dan m bisa tertukar, dan kata yang tidak ada dalam data bahasa lebih sering salah dibaca.
Pengaturan bahasa lebih penting daripada opsi lain mana pun. Model yang dilatih dengan huruf Latin tidak bisa membaca aksara Thai atau Jepang, dan teks dalam bahasa yang tidak dipilih biasanya keluar sebagai karakter yang salah. Semua opsi di alat LeedyBox kecuali "Hanya Inggris" menggabungkan bahasa pilihan dengan bahasa Inggris, yang membantu untuk dokumen campuran, misalnya kontrak berbahasa Indonesia dengan nama produk dalam bahasa Inggris.
Yang Memengaruhi Akurasi OCR
| Faktor | Dampak | Yang membantu |
|---|---|---|
| Resolusi | Huruf kecil kehilangan detail yang membedakan satu huruf dari yang lain | Pindai pada 300 DPI atau lebih; lebih tinggi untuk huruf kecil |
| Kemiringan dan lengkungan | Baris miring dan halaman buku yang melengkung mengacaukan deteksi baris | Pindai rata dan lurus; foto tepat dari atas |
| Kontras dan noise | Latar abu-abu, noda, tembusan halaman belakang, dan artefak JPEG tampak seperti goresan | Pindaian bersih dengan teks gelap di atas latar putih |
| Font | Font dekoratif, sangat tipis, atau sangat tebal lebih sering salah dibaca | Periksa hasilnya dengan teliti |
| Tulisan tangan | Tesseract dilatih dengan teks cetak | Jangan berharap banyak; lebih baik diketik |
| Teks vertikal | Teks Jepang atau Tionghoa vertikal sering salah dibaca | Periksa dengan teliti atau ketik ulang |
Karena alat menggambar halaman pada sekitar 144 piksel per inci, huruf kecil seperti catatan kaki atau tulisan kecil di kontrak bisa sulit dibaca bahkan dari pindaian yang baik. Untuk halaman seperti itu, PDF ke JPG menghasilkan gambar beresolusi lebih tinggi, dan Gambar ke Teks (OCR) dapat membaca ulang teks kecil pada ukuran dua kali lipat serta menaikkan kontras sebelum pengenalan.
Tabel, Kolom, dan Tata Letak
Hasilnya berupa teks polos. Tabel kehilangan kisinya, halaman berkolom bisa keluar per kolom atau per baris melintasi kolom, dan kotak teks serta keterangan gambar ditempatkan di mana pun file atau mesin OCR menaruhnya dalam urutan baca. Mengenali kata dan menyusun ulang tata letak adalah dua masalah berbeda, dan alat ini hanya menyelesaikan yang pertama. Untuk tabel angka, cocokkan setiap nilai dengan dokumen asli atau ketik ulang tabelnya di spreadsheet; untuk dokumen panjang, susun kembali judul dan paragraf di editor setelah teks diekstrak.
Memeriksa dan Merapikan Hasil
- Bandingkan beberapa angka, nama, dan tanggal dengan dokumen asli; kesalahan OCR pada angka mudah terlewat.
- Cari kekeliruan yang umum: 0 dan O, 1, l, dan I, 5 dan S, rn dan m, serta aksen yang hilang.
- Sambungkan kembali kata yang dipenggal dengan tanda hubung di akhir baris dan baris yang terputus di tengah paragraf.
- Hapus penanda halaman, header, dan nomor halaman jika Anda memerlukan teks yang bersambung.
- Simpan hasilnya dengan "Salin Teks" atau "Simpan sebagai .TXT"; file yang disimpan berupa teks polos UTF-8.
Pertanyaan Umum
Mengapa ada halaman yang hasilnya kosong?
Halaman itu tidak punya lapisan teks dan OCR tidak menemukan apa pun yang bisa dibaca: pindaiannya mungkin kosong, terlalu pudar atau terlalu kecil, atau teksnya tulisan tangan. Coba pindaian yang lebih jelas, atau ubah halaman dengan PDF ke JPG lalu gunakan Gambar ke Teks dengan opsi kontras dan pembesarannya.
Bisakah alat ini membaca PDF yang dilindungi kata sandi?
Tidak untuk PDF yang meminta kata sandi saat dibuka; alat akan menampilkan pesan galat. Jika Anda berhak, buka file dengan kata sandinya di penampil PDF lalu simpan salinan tanpa proteksi terlebih dahulu.
Bisakah alat ini membuat PDF yang bisa dicari?
Tidak. Hasilnya berupa teks polos yang bisa Anda salin atau simpan sebagai file .txt, dan PDF itu sendiri tidak diubah. Program yang membuat PDF yang bisa dicari menambahkan lapisan teks OCR tak terlihat di atas setiap halaman pindaian.
Mengapa OCR lambat pada dokumen panjang?
Setiap halaman pindaian digambar sebagai gambar dan dikenali di browser Anda, satu per satu, setelah mesin OCR dan data bahasa diunduh. Pada perangkat yang lebih lambat, satu halaman bisa memakan beberapa detik atau lebih. Halaman dengan lapisan teks jauh lebih cepat karena tidak perlu dikenali.