Skip to content

simons-hub/barcode-utils-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

barcode-utils-kotlin

License: MIT Kotlin

Pure Kotlin barcode format detection, validation, and check digit calculation. No Android dependencies — works anywhere Kotlin runs.

Features

  • Format detection — auto-detect UPC-A, UPC-E, EAN-13, EAN-8, Code 128, QR Code, Codabar, ITF, PDF417, Data Matrix, and Aztec from a raw string
  • Check digit validation — verify and strip check digits for UPC-A, UPC-E, EAN-13, EAN-8, and ITF
  • Check digit calculation — generate correct check digits for new barcodes
  • Codabar detection — pattern matching for Codabar start/stop characters
  • Display ratios — standard height/width ratios for rendering barcodes in UI
  • OCR text extraction — extract barcode values and expiry dates from raw OCR text with common misreading corrections

Usage

Detect barcode format

import com.simonshub.barcodeutils.BarcodeDetector

val format = BarcodeDetector.detect("012345678905")
// → BarcodeFormat.UPC_A

val qr = BarcodeDetector.detect("https://example.com")
// → BarcodeFormat.QR_CODE

val codabar = BarcodeDetector.detect("A12345B")
// → BarcodeFormat.CODABAR

Validate and strip check digits

import com.simonshub.barcodeutils.BarcodeValidator
import com.simonshub.barcodeutils.BarcodeFormat

// Returns data without check digit, or null if invalid
val data = BarcodeValidator.stripCheckDigitIfValid("012345678905", BarcodeFormat.UPC_A)
// → "01234567890"

// Calculate a check digit
val check = BarcodeValidator.calculateCheckDigit("01234567890", BarcodeFormat.UPC_A)
// → '5'

Extract barcodes from OCR text

import com.simonshub.barcodeutils.BarcodeTextExtractor

val result = BarcodeTextExtractor.extract("Card Number: O12345678905\nExp: 05/26")
// result.barcode → "012345678905" (O corrected to 0)
// result.expiryDate → "0526"

Display ratios for UI rendering

import com.simonshub.barcodeutils.BarcodeFormat
import com.simonshub.barcodeutils.targetDisplayRatio

val ratio = BarcodeFormat.QR_CODE.targetDisplayRatio()  // → 1.0 (square)
val upcRatio = BarcodeFormat.UPC_A.targetDisplayRatio() // → 0.7

API Reference

BarcodeDetector

Method Description
detect(value: String): BarcodeFormat Auto-detect format from string value
isLikelyCodabar(value: String): Boolean Check if string matches Codabar pattern

BarcodeValidator

Method Description
isValid(value: String, format: BarcodeFormat): Boolean Validate value against format rules
hasCheckDigit(format: BarcodeFormat): Boolean Whether format uses mandatory check digit
stripCheckDigitIfValid(value: String, format: BarcodeFormat): String? Validate and strip check digit
calculateCheckDigit(data: String, format: BarcodeFormat): Char? Calculate check digit for data

BarcodeTextExtractor

Method Description
extract(text: String): ExtractionResult Extract barcode + expiry date from OCR text
splitIntoWords(line: String): List<String> Split line by whitespace

BarcodeFormat enum

UPC_A, UPC_E, EAN_13, EAN_8, CODE_128, CODE_39, PDF417, DATA_MATRIX, QR_CODE, CODABAR, ITF, AZTEC, UNKNOWN

Extension: BarcodeFormat.targetDisplayRatio(): Float — standard height/width ratio for rendering.

Installation

Copy the com.simonshub.barcodeutils package into your project, or include as a Gradle module dependency.

License

MIT License. See LICENSE for details.

About

Pure Kotlin barcode format detection, validation, and check digit calculation, with no Android dependencies

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages