itc_card_scanner 0.0.1
itc_card_scanner: ^0.0.1 copied to clipboard
A Flutter plugin for scanning credit cards using device camera with OCR. Extracts card number, expiry date, cardholder name, and card type.
ITC Card Scanner #
A Flutter plugin for scanning credit cards using device camera with OCR capabilities. Automatically extracts card number, expiry date, cardholder name, and card type.
Features #
✅ Card Number Detection - Automatically scans and validates card numbers
✅ Expiry Date Extraction - Detects MM/YY format dates
✅ Cardholder Name Recognition - Extracts name from card
✅ Card Type Identification - Detects Visa, MasterCard, Amex, etc.
✅ Real-time Preview - Shows detected information overlay
✅ Cross Platform - Works on both Android and iOS
Supported Card Types #
- Visa
- MasterCard
- American Express
- Discover
- JCB
- Diners Club
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
itc_card_scanner: ^0.0.1
Then run:
flutter pub get
Platform Setup #
Android #
No additional setup required. Camera permission is handled automatically.
iOS #
Add camera permission to ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to scan credit cards</string>
Usage #
Basic Usage #
import 'package:itc_card_scanner/itc_card_scanner.dart';
final _scanner = ItcCardScanner();
// Scan a card
final result = await _scanner.scanCard();
if (result != null && result['success'] == true) {
String cardNumber = result['cardNumber'];
String expiryDate = result['expiryDate'];
String cardholderName = result['cardholderName'];
String cardType = result['cardType'];
print('Card: $cardNumber');
print('Expiry: $expiryDate');
print('Name: $cardholderName');
print('Type: $cardType');
}
With Data Model #
import 'package:itc_card_scanner/itc_card_scanner.dart';
final result = await ItcCardScanner().scanCard();
if (result != null) {
final cardDetails = ScannedCardDetails.fromMap(result);
if (cardDetails.success) {
print('Scanned: ${cardDetails.cardNumber}');
print('Expires: ${cardDetails.expiryDate}');
print('Holder: ${cardDetails.cardholderName}');
print('Type: ${cardDetails.cardType}');
}
}
Example #
import 'package:flutter/material.dart';
import 'package:itc_card_scanner/itc_card_scanner.dart';
class CardScanPage extends StatefulWidget {
@override
_CardScanPageState createState() => _CardScanPageState();
}
class _CardScanPageState extends State<CardScanPage> {
final _scanner = ItcCardScanner();
String _result = 'Tap scan to start';
void _scanCard() async {
try {
final result = await _scanner.scanCard();
if (result != null && result['success'] == true) {
setState(() {
_result = '''
Card Number: ${result['cardNumber']}
Expiry Date: ${result['expiryDate']}
Cardholder: ${result['cardholderName']}
Card Type: ${result['cardType']}
''';
});
}
} catch (e) {
setState(() {
_result = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Card Scanner')),
body: Column(
children: [
ElevatedButton(
onPressed: _scanCard,
child: Text('Scan Card'),
),
Text(_result),
],
),
);
}
}
API Reference #
Methods #
scanCard()
Launches the card scanner and returns scanned card details.
Returns: Future<Map<String, dynamic>?>
Response Format:
{
'cardNumber': '1234 5678 9012 3456',
'expiryDate': '12/25',
'cardholderName': 'JOHN DOE',
'cardType': 'Visa',
'success': true
}
getPlatformVersion()
Returns the current platform version.
Returns: Future<String?>
Data Models #
ScannedCardDetails
class ScannedCardDetails {
final String cardNumber;
final String expiryDate;
final String cardholderName;
final String cardType;
final bool success;
}
Requirements #
- Flutter: >= 3.0.0
- Dart: >= 3.0.0
- Android: API level 24+
- iOS: 12.0+
Privacy #
This plugin only processes card data locally on the device. No card information is transmitted to external servers.
Contributing #
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Support #
For issues and feature requests, please visit our GitHub repository.