MareArts ANPR mobile app

Showing posts with label iOS. Show all posts
Showing posts with label iOS. Show all posts

12/30/2025

MareArts ANPR Mobile App - Professional License Plate Recognition in Your Pocket


📱 Introducing MareArts ANPR Mobile App - AI-Powered License Plate Recognition

We're excited to announce the MareArts ANPR Mobile App - bringing professional-grade license plate recognition to iOS! Experience the power of on-device AI for parking management, security checkpoints, and vehicle tracking, all in your pocket.

🎁 One License, Everything Included!

No additional license required! When you purchase a MareArts ANPR license, you get:

  • ✅ Python SDK (unlimited desktop/server usage)
  • ✅ iOS Mobile App (unlimited mobile usage)
  • ✅ Road Objects Detection
  • ✅ All future updates

One license = Use everywhere!

📲 Download Now

iOS: Download on App Store

Android: Coming Soon! 🚀

Search "marearts anpr" in the App Store

🎉 Free Trial Available!

  • 100 scans per day - FREE forever!
  • No credit card required
  • No registration needed
  • Try before you buy
  • Login for unlimited scans (with license)

✨ Key Features

🔒 100% Privacy First

  • On-Device AI Processing - All recognition happens on your iPhone
  • No Cloud Upload - Your data stays on your device
  • No Analytics Tracking - We don't track your usage
  • Local Storage - Complete privacy and security

⚡ Lightning Fast

  • Real-time Detection - Instant plate recognition
  • Continuous Scanning - Auto-capture mode for busy entrances
  • Optimized for iOS - Smooth 60 FPS camera
  • No Internet Needed - Works completely offline

🌍 Multi-Region Support

  • 🌍 Universal - All regions (default)
  • 🇪🇺 Europe+ - EU, UK, Switzerland, Norway
  • 🇰🇷 Korea - South Korea (한국)
  • 🇺🇸 North America - USA, Canada, Mexico
  • 🇨🇳 China - China (中国)

🧭 Five Powerful Tabs

1. 📷 Scan Page - Fast Recognition

Camera Modes:

  • Single Capture (⭕) - Take one photo at a time
  • Continuous Mode (🔄) - Auto-scan continuously
  • Cloud Mode (☁️) - Use cloud API for processing
  • Swipe left/right - Quick switch between modes

Smart Controls:

  • 🔦 Flash toggle for low light
  • 🔍 1x-5x zoom (pinch or tap)
  • 📷 Front/back camera switch
  • ✅ Tap to focus anywhere

Live Feedback:

  • Green/Red boxes show detected plates
  • Real-time plate number display
  • Confidence percentage shown
  • Whitelist/Blacklist status indicator

2. 🕐 Detections Page - Complete History

Three View Modes:

📋 List View

  • All captured plates chronologically
  • Grouped by: Today, Yesterday, This Week, etc.
  • Swipe left-to-right - Quick status change menu
  • Color badges: Green (whitelist), Red (blacklist), Orange (unknown)
  • Shows: Plate number, time, location, thumbnail

📸 Full Preview

  • Large plate image
  • Edit plate number (tap ✏️)
  • Detection + OCR confidence
  • GPS location & address
  • Quick actions: Copy, Delete, Add to Whitelist/Blacklist

🗺️ Map View

  • See all plates on interactive map
  • Smart clustering for nearby detections
  • Satellite/Road view toggle
  • Show all plate numbers as labels
  • Search by plate number
  • Tap markers for details

3. ✅ Rules Page - Whitelist & Blacklist

Smart Access Control:

  • Whitelist (Green) - Approved vehicles, success sound
  • Blacklist (Red) - Blocked vehicles, alert sound
  • Search in Real-time - Filter plates instantly
  • Partial matching: "ABC" finds "ABC-123"
  • Tab counters show totals
  • Swipe left to delete
  • + button to add new plates

Use Cases:

  • 🏢 Parking: Whitelist residents, blacklist violators
  • 🔐 Security: Whitelist staff, blacklist banned vehicles
  • 🚚 Delivery: Track known vehicles

4. 📊 Stats Page - Analytics & Insights

Overview Cards:

  • Total Scans (all-time)
  • Today's count
  • This Week / Month / Year

Top 10 Vehicles:

  • Most frequently detected plates
  • Tap to see all scans for that vehicle

Time Period Selector:

  • Today - Hourly breakdown
  • This Week - Monday to today
  • This Month - Current month
  • Year - Full year with year selector
  • Custom Range - Pick any dates

Status Filter:

  • View All, Whitelist only, Blacklist only, or Unknown

5. ⚙️ Settings Page - Fine-Tune Everything

Account:

  • Login with email + signature → Infinite scans!
  • Free trial: 100 scans/day (no login)
  • Shows expiry date

Notifications:

  • 🔊 Sound alerts (success/alert/unknown)
  • 📳 Vibration patterns (different for whitelist/blacklist)

Detection Settings:

  • Sync Thresholds - Link detection + OCR together
  • Detection Threshold (60-95%) - Minimum confidence
  • OCR Threshold (60-95%) - Text recognition confidence
  • Max Detections (1-10) - Plates per scan
  • Ignore Duplicates (0-60s) - Prevent repeated saves
  • Plate Region - Select specific region for accuracy

Storage:

  • Save images toggle
  • Clear history
  • Data retention: 7-365 days or Never

Location:

  • Enable GPS for map view
  • Shows address with detections

🎯 Real-World Use Cases

🏢 Parking Management

1. Add residents to Whitelist
2. Scan vehicles at entrance
3. Green = Allowed, Red = Blocked
4. Review violations in history
5. View statistics monthly

🔐 Security Checkpoint

1. Add approved vehicles to Whitelist
2. Add banned vehicles to Blacklist
3. Use Continuous Mode at gate
4. Audio/vibration alerts instantly
5. GPS tracking of all entries

🚗 Vehicle Tracking

1. Scan vehicles continuously
2. View complete history
3. Use Map to see locations
4. Export data for reports
5. Track Top 10 frequent visitors

🚚 Delivery Management

1. Track delivery vehicle arrivals
2. Time-stamped records
3. GPS location logging
4. Statistics for optimization
5. Whitelist known carriers

💡 Pro Tips for Best Results

✅ Best Practices:

  • Distance: 2-3 meters from vehicle
  • Angle: Perpendicular to plate (90 degrees)
  • Lighting: Good outdoor light (daytime best)
  • Focus: Tap plate area to focus before scanning
  • Stability: Hold steady while capturing

❌ Avoid:

  • Too far away (>5 meters)
  • Extreme angles
  • Low light conditions
  • Motion blur (moving vehicle)
  • Dirty or damaged plates

⚙️ Settings Recommendations:

Use Case Detection OCR Max Plates Region
High Accuracy
(Parking/Security)
90% 90% 1 Specific
High Recall
(Traffic Monitoring)
70% 70% 5 Universal
Balanced
(General Use)
80% 80% 2 Specific

🔄 Latest Update (v1.5.16)

What's New:

  • ✨ Year selector in Stats page
  • 📅 Custom date range picker
  • 🔍 Search in Rules page (real-time filtering)
  • 👆 Swipe navigation between modes
  • 🎨 UI improvements
  • 🐛 Bug fixes and performance enhancements

🆚 Free vs Paid License

Feature Free Trial Paid License
Daily Scans 100/day Unlimited ∞
All Features
5 Regions
Whitelist/Blacklist
History & Stats
Map View
Python SDK
Commercial Use
Support Community Priority

🌟 Why Choose MareArts ANPR Mobile App?

  • Professional Grade - Same AI as enterprise SDK
  • 100% Privacy - All processing on-device
  • Lightning Fast - Real-time recognition
  • Free Trial - 100 scans/day forever
  • Multi-Region - Works worldwide
  • Complete Solution - Whitelist, history, map, stats
  • One License - Mobile + SDK included
  • Regular Updates - New features monthly

📊 Technical Specs

  • Platform: iOS 14.0+ (Android coming soon)
  • AI Engine: On-device CoreML
  • Processing Time: ~0.1s per frame
  • Accuracy: 95%+ (optimal conditions)
  • Storage: ~200MB (with models)
  • Internet: Not required (offline capable)
  • Camera: All iOS cameras supported

🚀 Get Started in 3 Steps

# Step 1: Download from App Store
Search "marearts anpr" → Install

# Step 2: Open app and start scanning
Tap Scan → Point at license plate → Capture!

# Step 3 (Optional): Login for unlimited
Settings → Login → Enter email + signature → ∞ scans!

💼 Perfect For:

  • 🏢 Parking Lot Managers - Automate access control
  • 🔐 Security Guards - Quick vehicle verification
  • 🏠 Residential Communities - Resident/visitor tracking
  • 🏗️ Construction Sites - Authorized vehicle entry
  • 🏨 Hotels - Valet parking management
  • 🚚 Logistics - Delivery vehicle tracking
  • 👮 Law Enforcement - Field plate scanning
  • 🎓 Universities - Campus parking control

📞 Support & Resources

🎁 Special Offer

Buy one license, get everything:

  • ✅ Python SDK (desktop/server)
  • ✅ iOS Mobile App (unlimited scans)
  • ✅ Road Objects Detection
  • ✅ All future updates
  • ✅ Priority support

One payment, lifetime access!

💬 What Users Are Saying

"Perfect for our parking lot! 100 free scans/day is enough for testing, and the paid version is unlimited." - Parking Manager

"Finally, professional ANPR on mobile! On-device processing means no privacy concerns." - Security Director

"The whitelist/blacklist feature saves us so much time at our security gate." - Facility Manager

"Map view is genius! We can see exactly where each vehicle was spotted." - Operations Manager

🎯 Start Today!

  1. 📲 Download: Search "marearts anpr" on App Store
  2. 📷 Try Free: 100 scans/day, no credit card
  3. 🚀 Upgrade: Login for unlimited scans
  4. 💼 Deploy: Use in production with confidence

Professional license plate recognition is now in your pocket! 📱🚗



2/06/2024

iOS swift dictionary example code

 .


// Existing dictionary of ages

var ages: [String: Int] = ["John": 30, "Emma": 25]


// Adding a new dictionary with String keys and String values

var occupations: [String: String] = ["John": "Engineer", "Emma": "Doctor"]


// Adding a new key-value pair to the occupations dictionary

occupations["Mike"] = "Teacher"


// Updating a value for a key in the occupations dictionary

occupations["Emma"] = "Senior Doctor" // Emma got a promotion!


// Accessing a value for a given key in the occupations dictionary

if let occupation = occupations["John"] {

    print("John's occupation is \(occupation).")

} else {

    print("John's occupation is not available.")

}


// Merging the ages and occupations dictionaries

// Assuming you want to create a summary for each person

for (name, age) in ages {

    if let occupation = occupations[name] {

        print("\(name) is \(age) years old and works as a \(occupation).")

    } else {

        print("\(name) is \(age) years old.")

    }

}


// Removing a key-value pair from the occupations dictionary

occupations["Mike"] = nil // Mike's occupation is removed


// Iterating over all key-value pairs in the occupations dictionary

for (name, occupation) in occupations {

    print("\(name) works as a \(occupation).")

}


// Checking the count of elements in both dictionaries

print("There are \(ages.count) people in the ages dictionary.")

print("There are \(occupations.count) occupations listed.")

..


refer to code, hope to get some useful idea.

Thank you.

🙇🏻‍♂️

2/05/2024

SWIFT Examples of Initializing and Forcefully Unwrapping Optionals

 String

var nonOptionalString: String = "Hello"
print(nonOptionalString) // Directly prints "Hello"

var optionalString: String? = "Hello"
print(optionalString!) // Forcefully unwraps and prints "Hello"

.

String optional

var optionalString: String? = "Hello"
if let unwrappedString = optionalString {
print(unwrappedString) // Prints "Hello"
} else {
print("optionalString was nil")
}

optionalString = nil
if let unwrappedString = optionalString {
print(unwrappedString)
} else {
print("optionalString was nil") // Prints "optionalString was nil" because it's now nil
}

.


Int

var nonOptionalInt: Int = 4
print(nonOptionalInt) // Directly prints 4

var optionalInt: Int? = 4
print(optionalInt!) // Forcefully unwraps and prints 4

.


Int optional

var optionalInt: Int? = 4
if let unwrappedInt = optionalInt {
print(unwrappedInt) // Prints 4
} else {
print("optionalInt was nil")
}

optionalInt = nil
if let unwrappedInt = optionalInt {
print(unwrappedInt)
} else {
print("optionalInt was nil") // Prints "optionalInt was nil" because it's now nil
}

.


Float

var nonOptionalFloat: Float = 3.14
print(nonOptionalFloat) // Directly prints 3.14

var optionalFloat: Float? = 3.14
print(optionalFloat!) // Forcefully unwraps and prints 3.14

.


Double

var nonOptionalDouble: Double = 3.14159
print(nonOptionalDouble) // Directly prints 3.14159

var optionalDouble: Double? = 3.14159
print(optionalDouble!) // Forcefully unwraps and prints 3.14159

.


Bool

var nonOptionalBool: Bool = true
print(nonOptionalBool) // Directly prints true

var optionalBool: Bool? = true
print(optionalBool!) // Forcefully unwraps and prints true

.


optional type is added '?' in the end of type.

so that the value can be have "nil". "nil" is also classified false in if logic.

The reason why exist such a type is swift is UI based language and value from ui button or action might have any value, so to prevent error, optional type would be needed. 


🙇🏻‍♂️