Barcode Scanning موبائل ڈیوائس کے کیمرے کی مدد سے بارکوڈ پڑھنے اور ڈی کوڈ کرنے کی ٹیکنالوجی ہے۔ لیزر اسکینرز کے برعکس جنہیں خصوصی آلات کی ضرورت ہوتی ہے، کیمرہ پر مبنی اسکینرز کیمرے والے کسی بھی اسمارٹ فون پر کام کرتے ہیں۔ موبائل ڈویلپمنٹ میں، Barcode Scanning کو ML Kit Barcode Scanning (Google)، AVFoundation (Apple)، ZXing (اوپن سورس) یا Scandit (تجارتی SDK) کے ذریعے لاگو کیا جاتا ہے۔ Google ML Kit, 2025 کے مطابق، لائبریری روزانہ 2+ ارب اسکین 98.5% درستگی کے ساتھ پروسیس کرتی ہے۔
اہم نکات
Barcode Scanning کیمرے کے ذریعے بارکوڈ کی بصری شناخت کا عمل ہے۔ الگورتھم ایک تصویر لیتا ہے، اس میں کوڈ ڈھونڈتا ہے (مقامی کاری)، اسے ڈی کوڈ کرتا ہے (ڈیٹا نکالنا) اور ایک سٹرنگ ویلیو لوٹاتا ہے۔ جدید SDK کسی بھی سمت، سائز اور روشنی کے کوڈ اسکین کر سکتے ہیں — صارف کو صرف کیمرہ اشارہ کرنا ہوتا ہے۔
بارکوڈ فارمیٹس دو گروپوں میں تقسیم ہیں: 1D (لکیری) — EAN-13, UPC-A, Code 128, Code 39, ITF, Codabar — 20–30 حروف تک پر مشتمل، مصنوعات اور لاجسٹکس کے لیے استعمال ہوتے ہیں؛ 2D (میٹرکس) — QR کوڈ, Data Matrix, PDF417, Aztec — 3000+ حروف تک پر مشتمل، لنکس، ٹکٹ، دستاویزات کے لیے استعمال ہوتے ہیں۔ ML Kit 14 فارمیٹس کو سپورٹ کرتا ہے — تمام عام 1D اور 2D فارمیٹس۔
Data Matrix ایک 2D کوڈ ہے جو QR جیسا لیکن زیادہ کمپیکٹ ہے۔ یہ صنعت (پرزوں کی مارکنگ)، الیکٹرانک ٹکٹ (IATA BCBP)، طبی نمونوں میں استعمال ہوتا ہے۔ Data Matrix 2335 حروف تک رکھ سکتا ہے اور بہت چھوٹی سطحوں پر — 2x2 ملی میٹر تک — پرنٹ کیا جا سکتا ہے۔ QR کے برعکس، Data Matrix میں فائنڈر پیٹرن (کونوں میں مربع) نہیں ہوتے اور اسے زیادہ درست کیمرہ کیلیبریشن کی ضرورت ہوتی ہے۔
| فارمیٹ | قسم | زیادہ سے زیادہ ڈیٹا | استعمال |
|---|---|---|---|
| EAN-13 | 1D | 13 ہندسے | دکانوں کی مصنوعات |
| QR کوڈ | 2D | 4296 حروف | لنکس، ادائیگیاں، ٹکٹ |
| Data Matrix | 2D | 2335 حروف | صنعت، طب |
| PDF417 | 2D | 2710 حروف | دستاویزات، بورڈنگ پاس |
| Code 128 | 1D | 80 حروف | لاجسٹکس، نقل و حمل |
QR کوڈ موبائل ایپلیکیشنز میں سب سے مشہور 2D فارمیٹ ہے۔ اس میں URL، متن، vCard، WiFi کنفیگریشن، ادائیگی کی معلومات (UPI, SBP) شامل ہوتی ہے۔ QR کوڈ کے 40 ورژن (21x21 سے 177x177 ماڈیول تک) اور 4 ایرر درستگی کی سطحیں (L: 7%, M: 15%, Q: 25%, H: 30%) ہیں۔ موبائل ایپلیکیشنز کے لیے ورژن 2–10 (25x25 – 57x57 ماڈیول) استعمال کریں — سائز اور ڈیٹا کا بہترین توازن۔
ML Kit Barcode Scanning Android ایپلیکیشنز کے لیے بنیادی SDK ہے۔ ML Kit خود بخود تصویر میں تمام کوڈ ڈھونڈ لیتا ہے (ZXing کے برعکس جس میں کوڈ مرکز میں ہونا ضروری ہے)۔ API ایک Barcode آبجیکٹ لوٹاتا ہے جس میں rawValue (متن کا مواد)، format (کوڈ کی قسم)، boundingBox اور cornerPoints (کوڈ کے 4 کونے پوائنٹس) ہوتے ہیں۔ ML Kit سنگل اسکین (ایک فریم) اور کنٹینیو اسکین (ویڈیو سٹریم) کو سپورٹ کرتا ہے۔
ملٹی بارکوڈ موڈ — ML Kit ایک تصویر میں متعدد کوڈز کا پتہ لگا سکتا ہے۔ BarcodeScannerOptions.Builder() کے ذریعے فعال کریں۔ ملٹی موڈ میں Barcode کی فہرست لوٹائی جاتی ہے۔ انوینٹری (مصنوعات کے بیچ اسکین کرنا)، میز پر متعدد QR کوڈ پہچاننے کے لیے استعمال کریں۔ ملٹی بارکوڈ ڈیفالٹ طور پر بند ہے — صرف ضرورت ہونے پر فعال کریں کیونکہ یہ اسکیننگ کو 20–30% سست کر دیتا ہے۔
// ML Kit Barcode Scanning multi-code mode
val options = BarcodeScannerOptions.Builder()
.setBarcodeFormats(
Barcode.FORMAT_QR_CODE,
Barcode.FORMAT_EAN_13,
Barcode.FORMAT_DATA_MATRIX
)
.enableAllPotentialBarcodes()
.build()
val scanner = BarcodeScanning.getClient(options)
scanner.process(inputImage)
.addOnSuccessListener { barcodes ->
barcodes.forEach { barcode ->
val type = barcode.valueType // URL, TEXT, PHONE...
val rawValue = barcode.rawValue
val displayValue = barcode.displayValue
}
}
فارمیٹ فلٹرنگ — لازمی اصلاح۔ setBarcodeFormats() ان فارمیٹس کو محدود کرتا ہے جنہیں ML Kit تلاش کرے گا۔ اگر ایپ صرف QR کوڈ اسکین کرتی ہے — FORMAT_QR_CODE بتائیں۔ یہ دوسرے فارمیٹس کے ڈی کوڈنگ الگورتھم کو خارج کرکے اسکیننگ کو 2–3 گنا تیز کرتا ہے۔ خوردہ اسکینرز کے لیے — FORMAT_EAN_13 | FORMAT_UPC_A۔ لاجسٹکس کے لیے — FORMAT_CODE_128 | FORMAT_CODE_39 | FORMAT_PDF417۔
ZXing (Zebra Crossing) Java (Android) میں ایک اوپن سورس لائبریری ہے جس کے Swift, React Native, Flutter پر پورٹ ہیں۔ ML Kit آنے سے پہلے ZXing اسکیننگ کا ڈی فیکٹو معیار تھا۔ یہ تمام مشہور فارمیٹس کو سپورٹ کرتی ہے، کسی بھی ڈیوائس (Google Play کے بغیر Huawei سمیت) پر کام کرتی ہے، اور Google Play Services کی ضرورت نہیں ہے۔ نقصانات: ML Kit سے 2–3 گنا سست، فریم کے کناروں پر کوڈ نہیں ڈھونڈتی، کوئی ملٹی بارکوڈ نہیں۔
ML Kit vs ZXing — ML Kit رفتار، درستگی اور UX میں جیتتا ہے۔ ML Kit کوڈ کا پتہ لگاتا ہے چاہے وہ فریم کا صرف 10% گھیرتا ہو اور کونے میں ہو۔ ZXing کے لیے ضروری ہے کہ کوڈ فریم کا 50–80% گھیرے اور مرکز میں ہو۔ ML Kit کوڈ کی مقامی کاری کے لیے نیورل نیٹ ورک (MobileNetV2-SSD) استعمال کرتا ہے، ZXing کلاسک بائنرائزیشن اور فائنڈر پیٹرن تلاش استعمال کرتا ہے۔ Google (2025) کے مطابق، ML Kit 98.5% درستگی حاصل کرتا ہے جبکہ ZXing 92%۔
| خصوصیت | ML Kit | ZXing |
|---|---|---|
| درستگی | 98.5% | 92% |
| رفتار | 15–30 ms | 50–150 ms |
| ملٹی کوڈ | ہاں | نہیں |
| Google Play | ضروری | ضروری نہیں |
| کونے میں کوڈ | پتہ لگاتا ہے | پتہ نہیں لگاتا |
ZXing کب چنیں: اگر ایپلیکیشن Huawei ڈیوائسز (Google Play Services کے بغیر)، Android Go (محدود میموری) پر چلنی چاہیے، یا Play Services کے بغیر مکمل آف لائن آپریشن ضروری ہو۔ دیگر تمام صورتوں میں — ML Kit تیز، زیادہ درست، ضم کرنے میں آسان اور ملٹی کوڈ اور کنارے پر پتہ لگانے کی وجہ سے بہتر UX فراہم کرتا ہے۔
// ZXing Core: simple scanner
val reader = MultiFormatReader()
val bitmap = BitmapFactory.decodeResource(resources, R.drawable.test)
val source = RGBLuminanceSource(bitmap)
val binarizer = HybridBinarizer(source)
val binaryBitmap = BinaryBitmap(binarizer)
try {
val result = reader.decode(binaryBitmap)
Log.d("ZXing", result.text)
} catch (e: NotFoundException) {
// Code not found
}
Scandit ایک متبادل کے طور پر — 99.5% درستگی اور 10–20 ms رفتار کے ساتھ ایک تجارتی SDK۔ یہ اپنے نیورل نیٹ ورک استعمال کرتا ہے اور Google Play Services کی ضرورت نہیں ہے۔ قیمت — $400/ماہ سے (2019)۔ Scandit خوردہ اور لاجسٹکس (Walmart, FedEx) میں غالب ہے۔ زیادہ تر موبائل ایپلیکیشنز کے لیے ML Kit کافی ہے — Scandit صرف ہائی والیوم اسکیننگ والے انٹرپرائز کاموں کے لیے مناسب ہے۔
Apple AVFoundation AVCaptureMetadataOutput کے ذریعے مقامی Barcode Scanning فراہم کرتا ہے۔ iOS 7 سے، AVFoundation QR کوڈ اسکیننگ کو سپورٹ کرتا ہے، اور iOS 8 سے — تمام فارمیٹس EAN, UPC, Code 128, PDF417۔ AVFoundation کو اضافی SDK انسٹال کرنے کی ضرورت نہیں — یہ Foundation کا حصہ ہے۔ اسکیننگ A12+ پر Apple Neural Engine کے ذریعے کام کرتی ہے — رفتار 10–20 ms کم سے کم بجلی کی کھپت کے ساتھ۔
AVFoundation کے فوائد: صفر انحصار، خودکار کیمرہ سمت کا انتظام، بلٹ ان لائٹ/ڈارک موڈ سپورٹ، پس منظر میں کام (background modes کے ساتھ)۔ AVFoundation خود بخود اسکیننگ کے لیے آٹو فوکس اور ایکسپوزر سیٹ کرتا ہے — ڈویلپر کو صرف captureOutput ڈیلیگیٹ کو سبسکرائب کرنا ہوتا ہے۔ نقصان: ML Kit کے مقابلے میں کم سیٹنگز — ملٹی بارکوڈ یا فارمیٹ فلٹرنگ فعال نہیں کی جا سکتی۔
import AVFoundation
class BarcodeScannerController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
private var captureSession: AVCaptureSession!
override func viewDidLoad() {
let metadataOutput = AVCaptureMetadataOutput()
captureSession.addOutput(metadataOutput)
metadataOutput.setMetadataObjectsDelegate(self, queue: .main)
metadataOutput.metadataObjectTypes = [.qr, .ean13, .code128]
}
func metadataOutput(_ output: AVCaptureMetadataOutput,
didOutput objects: [AVMetadataObject],
from connection: AVCaptureConnection) {
guard let code = objects.first as? AVMetadataMachineReadableCodeObject else { return }
print(code.stringValue ?? "")
}
}
iOS پر ML Kit vs AVFoundation: ML Kit زیادہ کنٹرول دیتا ہے — فارمیٹس ترتیب دے سکتے ہیں، ملٹی بارکوڈ فعال کر سکتے ہیں، اعتماد کی بنیاد پر کوڈ فلٹر کر سکتے ہیں۔ AVFoundation پرانے ڈیوائسز پر تیز ہے (کم اوور ہیڈ)، لیکن iOS < 15 پر Data Matrix, Aztec, PDF417 کو سپورٹ نہیں کرتا۔ iOS 15+ کے لیے ML Kit بہتر ہے۔ iOS 12–14 کے لیے AVFoundation + غیر معاون فارمیٹس کے لیے ML Kit پر فال بیک استعمال کریں۔
Scandit Barcode Scanning کے لیے ایک تجارتی SDK ہے جو خوردہ، لاجسٹکس اور صحت کی دیکھ بھال پر مرکوز ہے۔ Scandit مختلف حالات میں 10+ ملین بارکوڈ تصاویر پر تربیت یافتہ اپنے نیورل نیٹ ورک استعمال کرتا ہے: چمک، نقصان، کم روشنی، 45° تک جھکاؤ، عکاسی۔ Scandit 15 میٹر تک کے فاصلے پر کوڈ اسکین کرتا ہے (گوداموں میں PDF417 کے لیے) اور خمیدہ سطحوں (کین، بوتلیں) پر۔
Scandit کی صلاحیتیں: SparkScan (تیز ترتیبی اسکیننگ کے لیے سنگل اسکین)، MatrixScan (ملٹی بارکوڈ + اسکین کردہ اشیاء کی AR ہائی لائٹنگ)، PickList (تصدیق کے ساتھ بارکوڈ کے ذریعے پروڈکٹ تلاش)۔ Scandit 50+ فارمیٹس کو سپورٹ کرتا ہے، بشمول GS1 DataBar اور Composite Codes۔ رفتار — 10–15 ms فی کوڈ۔ درستگی — معیاری روشنی میں 99.5%، کم روشنی میں 97%۔
// Scandit MatrixScan (SDK license required)
val barcodeTracking = BarcodeTracking
.forDataCaptureContext(context)
.addListener(this)
.build()
barcodeTracking.addSessionListener { session, _ ->
session.trackedBarcodes.forEach { (trackingId, barcode) ->
val data = barcode.data
val symbolCount = barcode.symbolCount
}
}
Scandit vs ML Kit: Scandit معاوضہ والا ($400+/ماہ) ہے، لیکن انٹرپرائز خصوصیات فراہم کرتا ہے: SparkScan (کارپوریٹ ڈیوائسز پر ہارڈویئر بٹن)، MatrixScan (ہائی لائٹ کرنے کے لیے AR اوورلے)، PickList (آواز کی تصدیق)۔ ML Kit مفت ہے اور 90% موبائل ایپلیکیشنز کے لیے کافی ہے: سٹور اسکینر، QR ریڈر، ٹکٹ ایپلیکیشنز۔ Scandit صرف Zebra/Honeywell ڈیوائس والے لاجسٹکس ٹرمینلز کے لیے مناسب ہے۔
Barcode Scanning کی اصلاح میں کیمرہ، ریزولوشن اور SDK سیٹنگز شامل ہیں۔ بنیادی اصول: کم پکسلز — تیز اسکیننگ۔ ML Kit کے لیے بہترین ریزولوشن ویڈیو کے لیے 480p (640x480) اور تصاویر کے لیے 720p (1280x720) ہے۔ 1080p تک بڑھانے سے درستگی میں بہتری کے بغیر پروسیسنگ 2–3 گنا سست ہو جاتی ہے۔ خودکار ریزولوشن مینجمنٹ کے لیے ImageAnalysis کے ساتھ CameraX استعمال کریں۔
فوکس اور ایکسپوزر اسکیننگ کے معیار کے لیے اہم ہیں۔ ML Kit کیمرہ خود بخود کنفیگر نہیں کرتا — ڈویلپر کو Camera2 یا CameraX کے ذریعے کنٹینیو آٹو فوکس اور کنٹینیو آٹو ایکسپوزر فعال کرنا ہوگا۔ آٹو فوکس کے بغیر، دھندلے کوڈ درستگی کو 60–70% تک کم کر دیتے ہیں۔ قریب سے اسکیننگ (5–15 سینٹی میٹر) کے لیے اگر دستیاب ہو تو کیمرہ میکرو موڈ استعمال کریں۔
آٹو زوم اور فائنڈر اوورلے — صارف کی UX بہتری۔ آٹو زوم کوڈ کا پتہ چلنے پر اسے بڑا کرتا ہے (Google Lens کیمرے کی طرح)۔ کوڈ کے boundingBox کا تجزیہ کرکے اور پیش نظارہ کو اسکیل کرکے لاگو کیا جاتا ہے۔ فائنڈر اوورلے ایک گرافیکل فریم ہے جو دکھاتا ہے کہ کیمرہ کہاں اشارہ کرنا ہے۔ بہتر UX کے لیے، ملے ہوئے کوڈ کا boundingBox دکھائیں اور کامیاب ڈی کوڈنگ پر اسے سبز رنگ میں ہائی لائٹ کریں۔
// CameraX + ML Kit: optimized scanner
class BarcodeAnalyzer(private val scanner: BarcodeScanner) :
ImageAnalysis.Analyzer {
override fun analyze(image: ImageProxy) {
if (image.image == null) { image.close(); return }
val mediaImage = InputImage.fromMediaImage(image.image, image.imageInfo.rotationDegrees)
scanner.process(mediaImage)
.addOnSuccessListener { barcodes ->
barcodes.firstOrNull()?.let {
// Haptic + sound + code highlight
}
}
.addOnCompleteListener { image.close() }
}
}
صارف کو فیڈ بیک: وائبریشن (HapticFeedback)، آواز (MediaActionSound)، بصری ہائی لائٹنگ (Canvas/Overlay)۔ کامیاب اسکین کے بعد، اگلے اسکین سے پہلے 1000–1500 ms کی تاخیر (تھروٹلنگ) شامل کریں — یہ ایک ہی کوڈ پر ڈپلیکیٹ ٹرگر کو روکتا ہے۔ ترتیبی اسکیننگ (بیچ اسکیننگ) کے لیے SparkScan طریقہ استعمال کریں: ہر اسکین ریکارڈ اور اعلان کیا جاتا ہے، 300–500 ms کی تاخیر کے ساتھ۔
اکثر پوچھے گئے سوالات
ML Kit Barcode Scanning Android کے لیے بہترین انتخاب ہے: مفت، 98.5% درستگی، ملٹی کوڈ، فریم کے کسی بھی حصے میں پتہ لگانا۔ اگر ایپلیکیشن Google Play کے بغیر Huawei ڈیوائسز پر چلنی چاہیے — ZXing (اوپن سورس، کم درستگی) استعمال کریں۔ انٹرپرائز لاجسٹکس کے لیے — Scandit (معاوضہ والا، 99.5% درستگی، SparkScan)۔ سادہ QR اسکینر کے لیے ZXing یا ML Kit کافی ہے۔
ML Kit Barcode Scanning 14 فارمیٹس کو سپورٹ کرتا ہے: 1D — EAN-8, EAN-13, UPC-A, UPC-E, Code 39, Code 93, Code 128, ITF, Codabar; 2D — QR کوڈ, Data Matrix, PDF417, Aztec۔ GS1 DataBar (RSS-14, RSS-Expanded) بھی سپورٹ ہے۔ مکمل فہرست Barcode.FORMAT_* دستاویزات میں ہے۔ فارمیٹس کو محدود کرنے کے لیے setBarcodeFormats() استعمال کریں — یہ اسکیننگ کو 2–3 گنا تیز کرتا ہے۔
کیمرہ ریزولوشن 480p (640x480) تک کم کریں، کنٹینیو آٹو فوکس فعال کریں، فارمیٹس کو ضروری تک محدود کریں (setBarcodeFormats)، FAST کارکردگی موڈ استعمال کریں۔ ML Kit کے لیے صرف ضروری فارمیٹس بتائیں — اضافی فارمیٹس کو خارج کرنے سے اسکیننگ 2–3 گنا تیز ہو جاتی ہے۔ ZXing کے لیے — GlobalHistogramBinarizer کے بجائے HybridBinarizer استعمال کریں (20% تیز)۔ AVFoundation کے لیے — metadataObjectTypes بتائیں۔
ہاں، تمام مقامی Barcode Scanning SDK (ML Kit, ZXing, AVFoundation, Scandit) مکمل طور پر آف لائن کام کرتے ہیں۔ ML Kit کو صرف ماڈل کے پہلے ڈاؤن لوڈ کے لیے انٹرنیٹ درکار ہے (ڈاؤن لوڈ شدہ موڈ)، جس کے بعد ماڈل ڈیوائس پر کیش ہو جاتا ہے۔ AVFoundation iOS میں بلٹ ہے، انٹرنیٹ درکار نہیں۔ ZXing Play Services کے بغیر مکمل طور پر آف لائن ہے۔ کلاؤڈ اسکیننگ (Google Cloud Vision) موبائل ایپلیکیشنز میں استعمال نہیں ہوتی۔
ML Kit اور Scandit میں نیورل نیٹ ورک الگورتھم کی بدولت خراب کوڈ کے لیے بلٹ ان تصحیح ہے۔ ML Kit خراب کوڈ (خراشیں، دراڑیں) کا 30% تک بحال کرتا ہے۔ Scandit — عیب دار کوڈ پر تربیت کی بدولت 50% تک۔ ZXing خراب کوڈ کو عملی طور پر بحال نہیں کرتا — اسے واضح تصویر درکار ہے۔ عیب دار کوڈ اسکین کرنے کے لیے ACCURATE کارکردگی موڈ کے ساتھ Scandit یا ML Kit استعمال کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں