GS1QR barkod oluşturmak, yük verisi bir Grup Ayırıcı içerene kadar basittir. Bu tek, yazdırılamayan karakter, ASCII 29, tarayıcıya değişken uzunlukta Uygulama Tanımlayıcısı alanının nerede bittiğini söyler. Geliştiriciler, manuel bayt birleştirme, özel kodlayıcılar veya yük verisi bölme gibi yöntemlerle bunun etrafından dolaştılar ve her bir geçici çözüm, taranabilen ancak ayrıştırılamayan semboller üretme riskini taşıyordu.
Aspose.BarCode for Python via .NET 26.6 bu sorunu tek bir bayrakla çözüyor. encode_gs1_separator_in_byte_mode özelliği, QR kodlayıcısını GS1 grup ayırıcılarını ve % karakterini ham baytlar olarak yazmaya zorlayarak tam GS1 yapısını korur. Bu öğreticide python‑net ortamında tam barkod oluşturma ve tanıma iş akışı ele alınmaktadır: SDK’nın kurulumu, uyumlu bir GS1QR sembolünün oluşturulması ve ayırıcıların dönüşüm sırasında hayatta kalıp kalmadığının kod noktası seviyesinde doğrulanması.
GS1QR Barkodları için Bayt Modu GS1 Ayırıcılarının Önemi
GS1QR, tedarik zinciri, sağlık hizmetleri ve perakende sektörlerinde tercih edilen iki boyutlu taşıyıcıdır; burada tek bir sembol, bir ürün tanımlayıcısı, parti numarası, son kullanma tarihi ve seri numarasını tek bir yapılandırılmış yük içinde tutmak zorundadır. GS1 Uygulama Tanımlayıcı sözdizimi bunu mümkün kılar, ancak uzunluğu sabit olmayan alanları ayırmak için Grup Ayırıcıya bağlıdır.
AI (10) ile parti numarası ve AI (21) ile seri numarasını birleştiren bir yükü düşünün. İkisi de değişken uzunlukta olduğundan, tarayıcının aralarında açık bir sınırlandırmaya ihtiyacı vardır. Doğru şekilde kodlanmış bir ayırıcı olmadan, aşağı akış sistemi iki alan yerine birleştirilmiş tek bir dize okur. Barkod başarılı bir şekilde taranır ve yine de yanlış veri teslim eder; bu, tarama olayında sorunu işaret eden hiçbir şey olmadığı için en kötü türde bir hatadır.
Bayt-modu kodlaması bunu kaynağında çözer. Kodlayıcı, ayırıcıyı yapısal bir işaretçi olarak yorumlamayı durdurur ve onu veri segmentine olduğu gibi yazar. Python geliştiricileri için pratik faydalar doğrudan ortaya çıkar:
- Uyumluluk. Yayınlanan sembol, tahmini yerine GS1 Genel Özelliklerine uyar.
- Daha basit kod. Manuel bayt birleştirme yok, özel kodlayıcı alt sınıfı yok, son işleme geçişi yok.
- Test Edilebilirliği. Yuvarlak dönüş, çözülen kod noktaları üzerinde doğrulama yaparak bir birim testinde doğrulanabilir.
Aspose.BarCode for Python kullanarak GS1QR Barkodları Oluşturma
Aspose.BarCode for Python via .NET, barkod oluşturma ve tanıma için yüksek seviyeli bir API sağlar. PyPI’den yükleyin:
pip install aspose-barcode-for-python-via-net
İki sınıf işin çoğunu üstlenir. BarcodeGenerator, aspose.barcode.generation‘dan, sembolleri oluşturur ve render eder. BarCodeReader, aspose.barcode.barcoderecognition‘dan, bunları çözer. Oluşturma ayarlarına, jeneratör örneği üzerindeki bir parametre ağacı aracılığıyla ulaşılır; burada QR ayarları gibi sembolojiye özgü seçenekler parameters.barcode.qr altında bulunur.
Referans materyalleri ürün sayfası, belgelendirme sitesi, ve API referansı.
Bir lisans dosyanız varsa, herhangi bir oluşturma veya tanıma çağrısından önce, uygulama başlangıcında bir kez uygulayın:
from aspose.barcode import License
license = License()
license.set_license("Aspose.BarCode.Python.NET.lic")
Byte-Modu Ayırıcı ile GS1QR Barkod Oluştur
- Gerekli tipleri içe aktarın -
BarcodeGeneratorveEncodeTypesüretim için,BarCodeReaderveDecodeTypedoğrulama için. BarcodeGeneratorörneğini oluşturunEncodeTypes.GS1QRve bir GS1 yük verisi dizesi ile. Parantezler AI bölümlerini gösterir, örneğin(10)ASPOSE2001(21)ASPOSE2026.- Byte-modu ayırıcı kodlamasını etkinleştirin
gen.parameters.barcode.qr.encode_gs1_separator_in_byte_mode = Trueayarını yaparak. - Çıktı çözünürlüğünü ayarlayın böylece oluşturulan sembol hem baskıda hem de ekranda kullanılabilir.
- Görüntüyü kaydedin kayıpsız bir formata, ardından kodlamayı doğrulamak için tekrar okuyun.
Aşağıdaki örnek, tam iş akışını gösterir:
from aspose.barcode.barcoderecognition import BarCodeReader, DecodeType
from aspose.barcode.generation import BarcodeGenerator, EncodeTypes
# 1. Create a GS1QR Barcode with Sample AI Data
# (10) = Batch or Lot Number, (21) = Serial Number
gen = BarcodeGenerator(EncodeTypes.GS1QR, "(10)ASPOSE2001(21)ASPOSE2026")
# 2. Turn on Byte-Mode Encoding for GS1 Group Separators
gen.parameters.barcode.qr.encode_gs1_separator_in_byte_mode = True
# 3. Set a Print-Ready Resolution
gen.parameters.resolution = 300
# 4. Save the Barcode to a PNG File
gen.save("gs1qr_test.png")
# 5. Verify by Reading the Barcode Back
reader = BarCodeReader("gs1qr_test.png", DecodeType.GS1QR)
for result in reader.read_bar_codes():
print("BarCode CodeText: " + result.code_text)
Nasıl Çalışır
BarcodeGenerator(EncodeTypes.GS1QR, "(10)ASPOSE2001(21)ASPOSE2026")GS1QR sembolü için yapılandırılmış bir oluşturucu oluşturur. Yük,(10)‘un Batch veya Lot Number AI’sı ve(21)‘in Serial Number AI’sı olduğu GS1 sözdizimini kullanır. Kütüphane, parantezli formu ayrıştırır ve spesifikasyonun gerektirdiği ayırıcıları ekler.gen.parameters.barcode.qr.encode_gs1_separator_in_byte_mode = True26.6’da tanıtılan seçeneği etkinleştirir. Etkinleştirildiğinde, kodlayıcı grup ayırıcıyı ve%işaretini veri segmentinde ham baytlar olarak yazar, yorumlamaz.gen.parameters.resolution = 300300 DPI’da oluşturur. Sadece ekran için olan semboller varsayılan ayarda iyidir, ancak etiket yazıcısı veya ambalaj tasarımı için amaçlanan her şey, sonradan ölçeklendirilmek yerine baskı çözünürlüğünde üretilmelidir.gen.save("gs1qr_test.png")kayıpsız bir PNG yazar, tam modül desenini korur. Bu, 1D sembollere göre 2D semboller için daha önemlidir, çünkü bir QR çözücü bir ızgarayı örnekler ve bulanık modül sınırlarına tolerans göstermez.read_bar_codes()BarCodeResultnesnelerinin yineleyebileceği bir koleksiyon döndürür veresult.code_textçözülen yükü, kontrol karakterleri dahil, tutar. Bir konsolda ayırıcı hiç bir şey olarak gösterilir, bu da bir sonraki bölümün çıktıya güvenmek yerine kod noktalarını incelemesinin tam nedenidir.
Oluşturulan Barkodu Oku ve Doğrula
Çözülen dizeyi yazdırmak, sembolün okunabilir olduğunu kanıtlar, doğru olduğunu değil. Grup ayırıcı basılamaz olduğundan, eksik bir ayırıcıya sahip bir yük ve doğru bir ayırıcıya sahip bir yük terminalde aynı görünür. Doğrulama kod‑nokta seviyesinde yapılmalıdır; bu da bir test paketinde doğrulamayı doğrudan yapmayı kolaylaştırır.
Adımlar
- Kaydedilmiş PNG’yi
BarCodeReaderveDecodeType.GS1QRile yükleyin. - Çözülen sonuçlar üzerinde yineleyin.
- Her karakterin Unicode kod noktasını inceleyin,
U+001Darayın. - Yükü ayırıcıda bölün ve alanları orijinal girdiyle karşılaştırın.
from aspose.barcode.barcoderecognition import BarCodeReader, DecodeType
GROUP_SEPARATOR = "\x1d"
# Load the Barcode Image Generated Earlier
reader = BarCodeReader("gs1qr_test.png", DecodeType.GS1QR)
results = list(reader.read_bar_codes())
if not results:
raise ValueError("No GS1QR barcode was detected in the image.")
for result in results:
decoded = result.code_text
print("Decoded GS1QR payload:", decoded)
# Inspect the Code Point of Every Character
for index, char in enumerate(decoded):
label = repr(char) if char.isprintable() else "<non-printable>"
print(f"Char {index}: {label} (U+{ord(char):04X})")
# Confirm the Separator Survived the Round Trip
if GROUP_SEPARATOR in decoded:
fields = decoded.split(GROUP_SEPARATOR)
print(f"Separator found. Payload splits into {len(fields)} field(s):")
for field in fields:
print(" -", field)
else:
print("Warning: no group separator present in the decoded payload.")
Nasıl Çalışır
DecodeType.GS1QRile okuyucuyu yapılandırmak, tanıma işlemini yalnızca bu sembolojiyle sınırlar; bu, tüm tipleri taramaktan hem daha hızlı hem de daha güvenlidir, çünkü hatalı bir sembolün düz QR olarak çözümlenmesini ve sessizce geçmesini önler.- Kontrol etmeden önce sonuçları
list(...)ile somutlaştırmak, boş durumu açıkça gösterir. Tanıma hatası, bir istisna fırlatmak yerine boş bir yinelenebilir döndürür; bu yüzden başarısız bir okuma üzerinde korumasız birfordöngüsü sessizce tamamlanır ve başarı rapor eder. - Kod nokta döngüsü gerçek doğrulamadır. Çıktıda
U+001Dgörülmesi, bayt modunun çalıştığını doğrular; onun olmaması, ayırıcıyı atıldığı veya dönüştürüldüğü anlamına gelir, çıktının ne kadar temiz göründüğünden bağımsız olarak. \x1düzerine bölmek, bireysel AI alanlarını yeniden oluşturur ve size CI boru hattında kaynak veriyle karşılaştırılabilecek değerler sağlar.
Ücretsiz Lisans Al
Aspose, değerlendirme filigranlarını kaldıran ve test için tam işlevselliği açan geçici ücretsiz bir lisans sunar. Bunu Aspose geçici lisans sayfasından talep edebilirsiniz.
Ücretsiz Ek Kaynaklar
Sonuç
encode_gs1_separator_in_byte_mode seçeneği, manuel bayt işleme kategorisini tek bir boolean ile değiştirir. QR parametrelerinde ayarlandığında, GS1 grup ayırıcıları ve % karakteri, sembole tam olarak spesifikasyonun gerektirdiği şekilde yazılır.
Bu öğreticide kurulum, bayt-modu ayırıcılarıyla bir GS1QR sembolü oluşturma ve sonucu konsol çıktısına güvenmek yerine kod‑nokta seviyesinde doğrulama ele alındı. Bu doğrulama adımı, en çok korunması gereken kısımdır. GS1 iş akışlarında, taranan bir barkod doğru bir barkodla aynı değildir ve test paketinizdeki kod‑nokta doğrulaması, etiketler üretime ulaşmadan ikisini ayıran şeydir.
FAQs
encode_gs1_separator_in_byte_mode seçeneği ne işe yarar? QR kodlayıcıya, GS1 grup ayırıcı (ASCII 29) ve
%karakterini yapısal işaretleyiciler olarak ele almak yerine ham bayt verisi olarak çıkarmasını söyler, böylece barkod yükünde bozulmadan kalırlar.GS1QR özelliklerini kullanmak için özel bir lisansa ihtiyacım var mı? GS1QR, standart Aspose.BarCode kütüphanesinin bir parçasıdır. Lisans olmadan değerlendirebilir ve değerlendirme filigranlarını kaldırmak için Aspose web sitesinden ücretsiz geçici bir lisans isteyebilirsiniz.
Bu özelliği diğer QR kod türleriyle kullanabilir miyim? Hayır. Bayrak, GS1QR kodlama türüne uygulanır. Standart QR ve Mikro QR kodlayıcıları bunu görmezden gelir, çünkü GS1 Uygulama Tanımlayıcısı ayrıştırması onlara uygulanmaz.
Oluşturulan barkod görüntüsü kayıpsız mı? PNG’ye kaydetmek, varsayılan olarak, tam modül desenini koruyan kayıpsız bir görüntü üretir. Barkodlar için JPEG’den kaçının, çünkü sıkıştırma artefaktları modül kenarlarını bulanıklaştırır ve okuma oranlarını düşürür.
Ayırıcı doğru bir şekilde kodlandığını nasıl doğrularım? Görüntüyü
BarCodeReaderileDecodeType.GS1QRkullanarak tekrar okuyun ve çözülen dizeyin kod noktalarını inceleyin. Yükteki birU+001D, grup ayırıcıyının bayt modunda kodlandığını doğrular.Byte-modunu etkinleştirmek barkod boyutunu etkiler mi? Byte modu, alfanümerik moddan daha fazla veri biti gerektirebilir, bu da sembolü daha büyük bir QR sürümüne itebilir. Kütüphane otomatik olarak uyan en küçük sürümü seçer, bu yüzden artış genellikle en fazla bir sürüm adımıdır.
Bu seçenek hangi Aspose.BarCode sürümünde tanıtıldı?
encode_gs1_separator_in_byte_modeözelliği Aspose.BarCode for Python via .NET 26.6 sürümünde eklendi. Daha eski sürümler, grup ayırıcılarını eklemek için manuel bayt manipülasyonu gerektirir.
