Most PDF Extractors Use the Wrong API
Sebagian besar alat PDF menggunakan sumber data yang salah.
Ketika pengembang berbicara tentang ekstraksi PDF, mereka biasanya merujuk pada getTextContent(). Metode ini menyediakan item teks dan posisinya. Ini adalah pengaturan default untuk hampir setiap alat di sisi browser.
Namun getTextContent() adalah tampilan yang telah diproses. Ini adalah versi sederhana dari apa yang sebenarnya tersedia.
Ada tiga tingkatan data dalam PDF.js:
• getStructTree(): Ini memberi tahu Anda makna dari dokumen tersebut. Ini berisi tabel, tajuk, dan rumus. • getOperatorList(): Ini memberi tahu Anda apa yang digambar oleh dokumen tersebut. Ini mencakup garis, jalur, dan bentuk. • getTextContent(): Ini adalah tampilan terfilter dari apa yang digambar oleh dokumen tersebut.
Sebagian besar alat menggunakan opsi ketiga. Ini berfungsi untuk 80% dokumen seperti laporan sederhana. Namun, metode ini gagal pada makalah akademik dan publikasi yang kompleks.
Hanya menggunakan getTextContent() menimbulkan empat masalah utama:
- Anda kehilangan struktur tabel. Anda harus menebak di mana letak sel berdasarkan posisi teks.
- Anda merusak persamaan matematika. Persamaan LaTeX sering kali muncul sebagai blok teks tunggal yang sangat besar.
- Anda melewatkan garis kolom. Banyak tata letak menggunakan garis nyata untuk memisahkan kolom. Garis-garis ini tidak ada dalam konten teks.
- Anda mendapatkan urutan baca yang salah. Teks sering kali muncul sesuai urutan saat digambar, bukan sebagaimana manusia membacanya.
Cara yang benar untuk membangun pemroses PDF adalah sistem tiga tingkat:
- Periksa getStructTree() terlebih dahulu. Jika dokumen memiliki struktur logis, gunakan itu untuk menemukan tabel dan tajuk secara langsung.
- Periksa getOperatorList() selanjutnya. Gunakan garis dan jalur eksplisit untuk menemukan batas kolom.
- Gunakan getTextContent() sebagai cadangan. Gunakan matematika geometris hanya jika dua tingkat pertama tidak menyediakan data.
Pendekatan ini bukan berarti menambah pekerjaan. Tingkat 1 dan 2 bertindak sebagai jalur keluar cepat. Jika dokumen terstruktur dengan baik, Anda dapat melewati perhitungan matematika yang sulit. Anda hanya menggunakan inferensi kompleks ketika dokumen tidak memiliki tag.
Arsitektur ini menangani file perusahaan yang sederhana maupun makalah ilmiah yang kompleks.
Sumber: https://dev.to/bonzai2carn/most-pdf-extractors-use-the-wrong-api-heres-what-we-built-instead-5dgh
