Mengapa PDF dua kolom diekstraksi secara serial? Catat koordinatnya dulu, baru bicarakan urutan bacaannya
Jelaskan bahwa serialisasi teks PDF dua kolom berasal dari kurangnya struktur semantik format, jelaskan bahwa parameter pengurutan hanyalah pengurutan geometris. Contoh Python sintetik berdasarkan partisi koordinat disediakan untuk mendemonstrasikan logika reorganisasi urutan, memperjelas batasan yang berlaku dan garis merah tinjauan manual, dan menyediakan jalur penerimaan pragmatis yang menghubungkan alur kerja terjemahan OmniDoc.
Urutan teks yang diekstraksi dari PDF dua kolom sering kali tidak dikenali secara salah, namun dibaca dalam urutan yang salah. Artikel ini ditujukan bagi pembaca yang perlu mengekstrak teks dari PDF dua kolom seperti makalah dan laporan, lalu menerjemahkan atau mengaturnya.
Pembaca biasanya menjumpai situasi ini: di tengah kolom kiri, kalimat berikutnya diikuti penjelasan rumus di kolom kanan. Semua karakter mungkin dikenali dengan benar, tetapi urutannya terganggu. Artikel ini pertama-tama menjelaskan mengapa serialisasi terjadi, dan kemudian menggunakan contoh sintetik untuk menunjukkan cara mengatur ulang urutan dengan mempartisi berdasarkan koordinat. Terakhir, ini memberikan batasan yang berlaku dan daftar penerimaan untuk memudahkan Anda menilai apakah ini dapat digunakan dalam file Anda sendiri.
Mengapa PDF dua kolom diekstraksi secara serial? Kesimpulan satu kalimat
Simpan koordinat dan halaman sumbernya terlebih dahulu, lalu urutkan sesuai aturan daerah. Jangan langsung memampatkan seluruh halaman menjadi string yang panjang.
| situasi Anda | Praktik yang direkomendasikan | alasan |
|---|---|---|
| Kertas dua kolom biasa, serialisasi teks | Baca kolom kiri suatu bagian terlebih dahulu, lalu baca kolom kanan | Penyambungan baris demi baris secara bergantian akan merusak paragraf |
| Hanya ingin mencobanya sebentar | Bandingkan hasil menghidupkan dan mematikan sort | sort hanya melakukan penyortiran geometris, cocok untuk halaman aturan |
| Halaman memiliki judul lintas kolom, catatan samping, dan catatan kaki | Proses secara terpisah berdasarkan wilayah dan periksa hubungan regional | Penyortiran geometris saja tidak dapat menentukan atribusi konten-konten ini. |
| Perlu diserahkan kepada model terjemahannya | Simpan koordinat dan nomor halaman, susun dulu urutannya lalu terjemahkan | Konteks yang salah urutannya sulit diperbaiki bahkan dengan mengubah modelnya. |
Kenapa pesanannya kacau?
PDF mencatat posisi setiap paragraf teks, bukan "paragraf manakah ini dan di kolom mana?" Ketika alat ekstraksi menghasilkan keluaran berdasarkan koordinat, jika tidak ada aturan luas, teks di kolom kiri dan kanan mungkin saling bertautan.
Masalah seperti ini belum tentu muncul pada tahap identifikasi. Mungkin semua kata disebutkan dengan benar, tetapi dalam urutan yang salah. Oleh karena itu, ide solusi harus difokuskan pada penyortiran dan zonasi, daripada berulang kali mengubah tautan pengenalan atau terjemahan.
Catat koordinatnya terlebih dahulu, lalu bicarakan urutan pembacaannya
Sebelum menyelesaikan masalah pengurutan, pertahankan koordinat dan halaman asal teks. Jangan terburu-buru mengompres seluruh halaman menjadi satu string panjang.
- Simpan empat koordinat setiap blok teks untuk memudahkan penilaian kepemilikan area selanjutnya.
- Simpan nomor halaman sumber untuk memudahkan penelusuran balik dan verifikasi manual.
- Jika informasi regional hilang, terjemahan selanjutnya akan mendapatkan konteks yang salah, dan mengubah model terjemahan mungkin tidak dapat memperbaikinya.
sort=Benar layak dicoba, tapi bukan pemahaman tata letak
PyMuPDF menawarkan berbagai format ekstraksi seperti teks, kata, dan blok. Pemrosesan spesifik sort bervariasi tergantung pada jenis dan versi output; tidak dapat digambarkan sebagai algoritma penyusunan huruf tetap, juga tidak dapat digunakan untuk menjanjikan pengembalian urutan membaca semua dokumen.
Rekomendasi penggunaan adalah sebagai berikut:
- Untuk halaman aturan, Anda dapat terlebih dahulu membandingkan hasil dari pengurutan di dalam dan di luar proses.
- Untuk halaman dengan judul penampang, catatan margin, atau catatan kaki, hubungan regional harus diperiksa kembali.
- PDF mungkin mengandung penanda struktur, tetapi ini tidak berarti bahwa antarmuka ekstraksi saat ini akan secara otomatis menyediakan pohon paragraf semantik yang Anda butuhkan.
Artikel ini tidak menerapkan pengenalan tata letak umum, melainkan hanya menunjukkan "cara mengurutkan aturan area yang ada," dengan jelas menjelaskan batas-batas kapabilitas. Untuk antarmuka dan format ekstraksi, lihat Panduan Ekstraksi Teks Resmi PyMuPDF.
Ilustrasikan masalah dengan lima blok teks komposit
Halaman contoh selebar 600 poin, dengan 300 poin di antara kolom; Di antara 80 poin teratas terdapat area judul hurdle, di bawahnya adalah area teks utama. Input sengaja diacak-acak: segmen kedua dari kolom kanan dicantumkan terlebih dahulu, segmen pertama dari kolom kiri ditempatkan kemudian. Setiap tuple berisi empat koordinat dan teks persegi panjang. Ini adalah struktur yang disederhanakan untuk tujuan demonstrasi dan tidak setara dengan nilai balik penuh get_text("blocks").
Hasil yang diharapkan haruslah adalah: judul, paragraf pertama kolom kiri, paragraf kedua kolom kiri, paragraf pertama kolom kanan, paragraf kedua kolom kanan. Blok yang melintasi batas antar kolom harus masuk ke daftar pengecualian, bukan diam-diam dibuang atau dipaksa masuk ke kolom kiri.
Contoh kecil yang bisa berjalan penuh
Contoh berikut hanya menggunakan pustaka standar Python. Saat mengintegrasikan PyMuPDF, Anda dapat mempertahankan lima bidang pertama dari hasil ekstraksi blok dan mengecualikan blok non-teks terlebih dahulu. Contoh ini tidak membuka file eksternal, tidak memerlukan OCR, dan tidak secara otomatis menyimpulkan batas kolom.
def order_known_layout(blocks, split_x=300, title_bottom=80):
groups = {"title": [], "left": [], "right": []}
rejected = []
for block in blocks:
x0, y0, x1, y1, text = block
if x1 <= x0 or y1 <= y0:
rejected.append(block)
continue
if y1 <= title_bottom:
region = "title"
elif y0 < title_bottom:
rejected.append(block)
continue
elif x1 <= split_x:
region = "left"
elif x0 >= split_x:
region = "right"
else:
rejected.append(block)
continue
groups[region].append(block)
ordered = []
for region in ("title", "left", "right"):
ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
return [b[4] for b in ordered], rejected
sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
(40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
(40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")
Nilai 80 dan 300 dalam contoh berasal dari pengaturan halaman komposit ini, yang bukan ambang pengalaman yang berlaku untuk semua PDF. Ketika lebar kolom kiri dan kanan di halaman berikutnya berubah, menggunakan parameter dari halaman sebelumnya dapat menghasilkan "program berjalan normal tetapi terjadi kesalahan konten." Aturan regional harus mengikuti halaman, setidaknya mencatat versi aturan dan ukuran halaman.
📊 Perbandingan Inti
| Metode penanganan | Apa yang bisa dilakukan? | Apa yang perlu dicatat? |
|---|---|---|
Gunakan sort=True langsung | Urutkan secara geometris berdasarkan koordinat; coba halaman aturan terlebih dahulu | Saya tidak mengerti kepemilikan atas judul hurdle, catatan sampingan, dan catatan kaki |
| Urutkan berdasarkan partisi koordinat | Pertama bagi area, lalu baca berdasarkan segmen agar lebih mudah diperiksa | Ambang batas partisi tergantung pada halaman dan perlu diverifikasi per halaman |
| Urutan membaca yang dianotasi secara manual | Hasilnya adalah yang paling mudah dikontrol dan sesuai untuk memverifikasi dokumen kunci | Biaya tinggi, cocok untuk pemeriksaan acak dan benchmarking |
Jangan hanya melihat kesalahan saat menerima
| Item inspeksi | Apa yang harus dilihat | Apa yang harus dilakukan jika tidak memenuhi persyaratan |
|---|---|---|
| Urutan regional | Setelah judul, pertama-tama bar kiri penuh, lalu bar kanan penuh | Periksa aturan partisi; jangan bergantung pada swapping string untuk patch patch |
| Konsistensi dalam konten | Jumlah blok yang diterima ditambah jumlah blok yang ditolak sama dengan jumlah blok input | Blokir pengiriman dan periksa blok yang hilang tanpa suara |
| Teks utama rintangan | Muncul di daftar penolakan | Tambahkan bagian rintangan atau penilaian manual |
| Rotasi dan pemotongan | Blok input dan partisi menggunakan sistem koordinat yang sama | Pertama, satukan koordinat, lalu buat penilaian inklusi |
| Header dan catatan kaki | Klasifikasi terpisah menurut aturan bisnis | Jangan hapus semua teks di bagian bawah sekaligus |
Dalam makalah nyata, struktur seperti ini juga bisa muncul: masukkan diagram halangan di tengah, dan mulai ulang kolom ganda di bawah gambar. Pada titik ini, Anda perlu membagi halaman menjadi bagian atas dan bawah lalu mengurutkannya secara terpisah. Pembagian tiga bagian sekali dalam artikel ini tidak cukup. Tata letak vertikal Tiongkok, teks dari kanan ke kiri, dan catatan batas yang kompleks sebaiknya tidak digunakan untuk membaca petunjuk di sini.
🎯 Metode mana yang cocok untukmu?
Jika kamu ......
- Hanya halaman kolom tunggal atau ganda yang hanya perlu menangani aturan: Pertama, bandingkan hasil pengaktifan dan penutupan
sort, lalu putuskan apakah akan menggunakan aturan partisi. - Menangani makalah dengan judul crossbar, grafik, atau catatan kaki: Bagi halaman berdasarkan bagian dan tetapkan daftar pengecualian untuk konten crossbar.
- Anda perlu menyerahkan terjemahan kepada orang lain: Simpan koordinat dan nomor halaman, periksa setiap item sesuai daftar periksa penerimaan, dan jangan hanya melihat apakah operasi tersebut adalah kesalahan.
- Jika Anda tidak ingin mengelola skrip sendiri: Anda dapat langsung menggunakan alat terjemahan dokumen siap pakai dan memeriksa terjemahan dengan daftar periksa berurutan yang sama.
Cara Menerima Alur Kerja Terjemahan OmniDoc
Nilai dari naskah yang dibuat sendiri terletak pada menyatakan aturan penerimaan dengan jelas; Nilai dari alat terjemahan siap pakai terletak pada pengurangan langkah antara dokumen dan terjemahan. Keduanya tidak bertentangan. OmniDoc (Entri Produk) menyediakan portal terjemahan dokumen, dan situs resmi juga memperkenalkan fitur seperti OCR, terminologi, dan perbandingan dwibahasa. Anda dapat memilih makalah yang sudah didesensitisasi dengan hak untuk mengunggah dan memeriksa terjemahan menggunakan daftar periksa yang sama.
Pemeriksaan utama meliputi:
- Periksa apakah kalimat pembuka setelah judul hurdle terhubung.
- Apakah teks teks telah digabungkan ke dalam teks utama?
- Periksa apakah referensi catatan kaki masih sesuai dengan posisi yang benar.
Ini adalah mengevaluasi hasil pengiriman, bukan menyimpulkan algoritma internal OmniDoc. Jika hasilnya tidak memenuhi persyaratan, harap simpan halaman asli dan bagian kesalahan, pertama-tama identifikasi apakah masalahnya ada pada identifikasi, pengurutan, atau terjemahan, lalu putuskan cara memperbaikinya.
❓ Pertanyaan yang Sering Diajukan (FAQ)
1. PDF serial dua kolom — apakah salah identifikasi?
Tidak selalu. Semua karakter mungkin dikenali dengan benar; masalah sering kali terletak pada urutan bacaan, jadi Anda harus terlebih dahulu memeriksa aturan urutan dan area.
2. sort=True: Bisakah Anda langsung menyelesaikan masalah urutan dua kolom?
Ini tidak bisa digeneralisasi. Penanganan sort bervariasi tergantung pada tipe dan versi output. Ini bukan pemahaman tata letak dan tidak dapat menjanjikan untuk mengembalikan urutan pembacaan semua dokumen. Untuk halaman aturan, Anda bisa mencobanya terlebih dahulu; untuk halaman dengan konten lintas seksi, Anda juga perlu memeriksa hubungan regional.
3. Kenapa tidak bisa dikompresi seluruh halaman menjadi string panjang?
Setelah koordinat dan informasi area hilang, terjemahan berikutnya hanya mendapatkan konteks yang salah sambung, dan bahkan model terjemahan yang berbeda mungkin tidak dapat memperbaikinya.
4. Apakah 80 dan 300 poin dalam contoh bisa langsung diterapkan pada PDF lain?
Tidak. Ini hanyalah pengaturan untuk halaman komposit ini. Ketika ukuran halaman atau lebar kolom berubah, versi aturan harus diverifikasi dan dicatat secara terpisah per halaman.
📝 Ringkasan
Untuk masalah pesanan PDF dua kolom, halaman koordinat dan sumber harus dipertahankan terlebih dahulu, kemudian ditangani dengan aturan regional, dan setiap item diperiksa sesuai dengan daftar periksa penerimaan. Skrip buatan sendiri cocok untuk menulis aturan dengan jelas, sementara alat siap pakai lebih baik untuk mengurangi langkah operasional; keduanya dapat digunakan bersamaan.
Rasakan sekarang: Unggah dokumen Anda untuk mulai menerjemahkan, mempertahankan format asli


