TIFF tidak harus hanya memiliki satu gambar: pemrosesan bingkai demi bingkai tidak akan melewatkan halaman.
Setelah TIFF dibuka, hanya halaman pertama yang diproses. Program ini tidak melaporkan kesalahan, namun konten lainnya hilang. Untuk format multi-frame, "berhasil membuka file" dan "memproses file sepenuhnya" adalah dua hal yang berbeda. Portal harus mengidentifikasi jumlah halaman sebelum memutuskan pemrosesan halaman demi halaman, batasan anggaran, dan daftar pengiriman.
TIFF mungkin berisi beberapa halaman gambar, dan hanya karena suatu program membuka file tersebut tidak berarti bahwa setiap halaman telah diproses. Jika hanya halaman pertama yang dibaca, program berakhir dengan normal, tetapi konten lainnya hilang. Artikel ini ditujukan bagi pengembang dan pekerja dokumen yang perlu melakukan pemindaian proses batch, gambar multi-bingkai, atau arsip multi-halaman. Ini menjelaskan cara mengidentifikasi jumlah halaman terlebih dahulu, memprosesnya bingkai demi bingkai, dan mencatat hasil setiap halaman.
Kode dalam artikel ini didemonstrasikan menggunakan sampel sintetis dan telah lulus pemeriksaan sampel di lingkungan yang terisolasi, namun ini tidak mewakili jaminan semua file atau efek produk yang sebenarnya. Sebelum memproses dokumen penting, harap simpan dokumen asli dan tinjau sesuai dengan batasan dan item penerimaan dalam teks.
Bagaimana TIFF multi-frame tidak melewatkan halaman? Kesimpulan satu kalimat
Pertama baca nomor halaman dan proses bingkai demi bingkai. Hasil setiap halaman harus dicatat, dan halaman yang hilang harus ditandai dengan jelas.
| situasi Anda | Praktik yang direkomendasikan | alasan |
|---|---|---|
| Setiap halaman perlu digunakan secara independen | Salin gambar saat ini saat melakukan iterasi, atau segera proses | Objek bingkai mungkin terkait dengan status penguraian kode yang mendasarinya, dan penyimpanan referensi secara langsung dapat dengan mudah memengaruhi satu sama lain. |
| File tersebut memiliki jumlah halaman yang banyak atau resolusi yang tinggi | Proses halaman demi halaman atau gunakan batch terkontrol | Menyimpan semua frame di memori akan terus menghabiskan sumber daya |
| Spesifikasi mungkin berbeda dari halaman ke halaman | Ukuran dokumen, pola dan orientasi halaman demi halaman | Halaman dalam dokumen yang sama belum tentu berukuran sama, dan halaman hitam putih dan berwarna dapat tercampur. |
| Pemrosesan halaman gagal | Cantumkan halaman yang hilang dan alasannya dalam daftar | Tidak bisa begitu saja mengembalikan dokumen dan menandai semuanya selesai |
Salin gambar saat ini saat melakukan iterasi pada bingkai
ImageSequence.Iterator cocok untuk melakukan iterasi pada beberapa frame, tetapi objek frame mungkin terkait dengan status decoding yang mendasarinya. Jika setiap halaman nantinya akan digunakan secara terpisah, halaman tersebut harus disalin selama iterasi atau segera diproses. Jangan menyimpan referensi ke objek yang bisa diubah berulang kali dan berharap mendapatkan halaman yang tidak saling mempengaruhi.
Buatlah dua frame TIFF untuk memverifikasi bahwa tidak ada halaman yang terlewat
from io import BytesIO
from PIL import Image, ImageSequence
first = Image.new("RGB", (12, 8), "white")
second = Image.new("RGB", (12, 8), "black")
stream = BytesIO()
first.save(stream, format="TIFF", save_all=True, append_images=[second])
stream.seek(0)
with Image.open(stream) as document:
assert document.n_frames == 2
pages = [frame.copy() for frame in ImageSequence.Iterator(document)]
assert len(pages) == 2
assert pages[0].getpixel((0, 0)) == (255, 255, 255)
assert pages[1].getpixel((0, 0)) == (0, 0, 0)
pages[0].putpixel((0, 0), (255, 0, 0))
assert pages[1].getpixel((0, 0)) == (0, 0, 0)
Di sini, kedua halaman disimpan dalam memori, yang hanya cocok untuk contoh sintesis yang sangat kecil ini. File pindaian sebenarnya harus diproses halaman demi halaman atau menggunakan batch terkontrol, dan hasil setiap halaman harus dicatat. Semua bingkai resolusi tinggi tidak dapat disalin dan ditumpuk tanpa batas waktu.
Selain nomor halaman, terdapat perbedaan halaman demi halaman
Dalam file multi-frame yang sama, perbedaan antar halaman seringkali lebih besar dari yang dibayangkan. Saat memeriksa halaman demi halaman, disarankan untuk mencatat hal-hal berikut:
| proyek | Mengapa memeriksa halaman demi halaman | Apa yang bisa direkam |
|---|---|---|
| ukuran | Halaman dari file yang sama belum tentu berukuran sama | Lebar, tinggi dan jumlah piksel |
| model | Halaman hitam putih dan berwarna boleh tercampur | Mode asli dan strategi konversi |
| arah | Mungkin berbeda pada halaman berbeda | Perubahan orientasi per halaman |
| status kegagalan | Korupsi suatu halaman tidak boleh diabaikan | Nomor halaman, kategori kesalahan |
Keberhasilan sebagian harus ditulis dengan jelas
Anda tidak bisa begitu saja kembali ke dokumen dan menandai semuanya selesai jika Anda baru memproses sembilan dari sepuluh halaman. Daftar pengiriman harus mencantumkan halaman yang hilang dan alasannya, memungkinkan pengguna memutuskan untuk mengirim ulang, menanganinya satu per satu, atau menerima pengiriman sebagian. Yang terbaik adalah menyimpan nomor sumber untuk nomor halaman tersebut, dan jangan memberi nomor ulang karena halaman tertentu gagal, jika tidak maka akan sulit bagi pengguna untuk kembali ke halaman asli.
Kelengkapan terjemahan dimulai dari input nomor halaman
Saat menggunakan alur kerja OmniDoc (portal produk) untuk memproses data pindaian multi-halaman, Anda dapat membandingkan daftar halaman masukan dengan rentang konten yang diterjemahkan. Jumlah halaman yang sama tidak secara otomatis membuktikan bahwa konten tersebut lengkap, tetapi halaman atau nomor halaman yang hilang adalah peringatan yang berharga. Pemeriksaan kewarasan harus dilakukan sebelum pemolesan bahasa.
📊 Perbandingan inti
| praktik | Skenario yang berlaku | Risiko utama |
|---|---|---|
| Baca hanya halaman pertama | tidak ada | Halaman yang tersisa akan hilang secara diam-diam, dan program tidak akan melaporkan kesalahan. |
| Simpan referensi bingkai secara langsung saat melakukan iterasi | Hanya menonton sementara | Konten pada halaman berbeda mungkin saling mempengaruhi |
| Salin halaman demi halaman atau segera proses | Setiap halaman perlu digunakan secara independen | Diperlukan pencatatan hasil tambahan per halaman |
| Simpan semua frame dalam memori | Sampel kecil dengan beberapa halaman dan resolusi rendah | File multi-halaman resolusi tinggi terus menempati memori |
🎯 Metode mana yang cocok untuk Anda?
Jika Anda perlu mengekspor atau menerjemahkan halaman demi halaman
Hitung dulu jumlah halamannya, lalu olah satu per satu, dan catat ukuran, cara, dan hasil pemrosesan setiap halaman.
Jika Anda berurusan dengan pemindaian resolusi tinggi dalam jumlah besar
Gunakan pemrosesan batch terkontrol untuk menghindari penyalinan semua frame dan menumpuknya di memori tanpa batas waktu.
Jika ingin diantar ke orang lain
Lampirkan daftar halaman yang hilang dan penjelasan mengapa halaman tersebut hilang, jangan hanya menandainya sebagai selesai.
❓ Pertanyaan yang Sering Diajukan (FAQ)
1. Jika program tidak melaporkan kesalahan, apakah berarti TIFF sudah diproses sepenuhnya?
tidak pasti. Contoh pada artikel menunjukkan bahwa program dapat berakhir normal ketika hanya halaman pertama yang dibaca, namun halaman sisanya terlewatkan. Berhasil membuka file dan memproses file sepenuhnya adalah dua hal yang berbeda.
2. Mengapa referensi setiap frame tidak dapat disimpan secara langsung?
Objek bingkai mungkin terkait dengan keadaan decoding yang mendasarinya. Untuk menggunakan setiap halaman secara independen, segera salin atau proses saat melakukan iterasi, dan jangan menyimpan referensi ke objek yang dapat diubah berulang kali.
3. Apakah jumlah halaman sama berarti isinya lengkap?
Tidak bisa disimpulkan seperti itu. Jumlah halaman yang sama tidak secara otomatis membuktikan bahwa konten tersebut lengkap, tetapi halaman atau nomor halaman yang hilang merupakan tanda bahwa Anda perlu waspada, dan pemeriksaan integritas harus dilakukan sebelum pemolesan bahasa.
4. Apa yang harus Anda lakukan jika halaman gagal diproses?
Cantumkan halaman yang hilang dan alasan kegagalan dalam daftar pengiriman, dan simpan nomor sumber untuk nomor halaman tersebut, sehingga pengguna dapat memutuskan untuk mengirim ulang, memprosesnya secara terpisah, atau menerima pengiriman sebagian.
📝 Ringkasan
Kunci TIFF multi-frame adalah mengkonfirmasi nomor halaman terlebih dahulu, kemudian memprosesnya halaman demi halaman dan mencatat hasilnya. Setiap halaman harus mempunyai status yang jelas, dan halaman yang hilang harus ditulis.
Referensi: Pillow ImageSequence.


