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

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages