Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Trading Card Scanner/Organizer

Maak een digitale inventaris van uw handel /verzamelkaarten met Lego en een Raspberry Pi.

Verhaal

Als kind was ik dol op het ruilen van kaarten. Ik kwam onlangs veel Magic The Gathering-kaarten in een doos tegen en dacht bij mezelf:ik vraag me af hoeveel kaarten ik heb en hoeveel ze waard zijn?! Het handmatig loggen en opzoeken hiervan zou even duren, dus besloot ik te kijken of ik een deel van het proces kon automatiseren. Op de een of andere manier leidde het proces tot het gebruik van een Raspberry Pi, het bouwen van een platform uit Lego en het benutten van AWS S3/Rekognition!

Het proces

  • Maak een foto van de titel van de kaart met een Raspberry Pi, RPi-camera en Lego-platform
  • Upload de foto's naar een AWS S3-bucket voor opslag en verwerking
  • Gebruik AWS Rekognition om tekst uit de afbeelding te halen en deze te vergelijken met een prijs-API om de marktprijs van elke kaart te krijgen

Ik had veel werk te doen...

Het Lego-platform

Ik ben niet goed in houtbewerking en ik dacht dat het misschien moeilijk zou zijn. In plaats daarvan besloot ik Lego te gebruiken, dus kocht ik een middelgrote bak die je bij verschillende winkels kunt krijgen. Ik heb mezelf uitgedaagd om alleen bij deze doos te blijven - geen andere ondersteuning, vandaar dat dit ding er kaal uitziet. Dit project laat niet zien hoe je het steen voor steen moet bouwen, maar er zouden hier genoeg foto's moeten zijn om het te kunnen repliceren of het nog beter te maken! Het ontwerp is geïnspireerd op een goedkope kaartsorteerder van $ 7 die ik jaren geleden heb gekregen. De servo achterin kan continu draaien en beweegt de banden naar voren in een eenvoudige tandwielachtige opstelling. Het wiel aan de voorkant dat uit het donkergroene stuk hangt, dient om te voorkomen dat de andere kaarten eruit glijden. Er is net genoeg ruimte om één kaart tegelijk naar buiten te duwen. Ik gebruikte ook een paar kaarten die aan elkaar waren geplakt om genoeg gewicht op de kaarten te houden om ervoor te zorgen dat er maar één uitkwam. Volledige openbaarmaking - u zult in de eerste video zien dat er een foto is gemaakt toen de kaart niet op zijn plaats zat. Dit gebeurde van tijd tot tijd, maar het was triviaal om de lege foto's te verwijderen.

De achterste servo zal draaien om de wielen naar voren te bewegen Bovenaanzicht Vooraanzicht. Merk op dat de kleine servo aan de voorkant niet is aangesloten - hij zit ingeklemd tegen de basis en grijze kolommen. De voorste servomotor zit eenvoudig tussen de onderste blauwe platen en de grijze kolommen. come out

De camera staat op een stapel stenen op enkele centimeters afstand van het platform, in een hoek zodat deze is uitgelijnd met de positie van de kaart. De resolutie is aangepast met code om de bovenkant van het deel van de kaart vast te leggen.

De lengte van het lint was een beetje lastig om mee om te gaan - ik zou aanraden om een ​​langere te nemen.

De hardware

Raspberry Pi was de beste keuze voor dit project omdat ik python moest gebruiken voor de randapparatuur. De andere dingen die we nodig hebben zijn twee servomotoren en een camera. Ik heb een 5V-voeding aangesloten op het breadboard - niet verplicht maar wel handig.

De code

De code is volledig geschreven in python 2.7. Eén script is voor het aandrijven van de servo's en het maken van de foto; de andere is voor het verwerken van de foto's die zijn opgeslagen in S3 tegen Rekognition.

Zodra we onze kaarten op het Lego-platform hebben geladen, kunnen we eenvoudig het volgende doen:

python mtg_servo.py  

Hiermee worden de servo's gestart en de kaarten gescand. Als het klaar is, kunnen we het script afsluiten en meer laden. Ik kon ongeveer 20-25 kaarten per minuut maken. De was een drieletterige code voor de kaartenset. Dit helpt ons georganiseerd te blijven voor zowel beeldverwerking als de prijs-API, b.v. alle .jpg's voor de "M13"-set zijn naar het pad geschreven.

AWS S3 en erkenning

Ik heb geprobeerd OCR uit te voeren met tesseract en OpenCV. Hoewel beide geweldige tools zijn, bleek Rekognition veel gemakkelijker te gebruiken. Het bood veel flexibiliteit voor positionering, verlichting, afstand, enz. Je hebt een AWS-account nodig om dit te doen, wat gratis is. Amazon is behoorlijk genereus met hun AWS Free Tier - je kunt er 5.000 foto's per maand onder verwerken. Ik heb de S3-bestanden handmatig geüpload omwille van de tijd (niet weergegeven, maar hier is een gids). De s3-bucket was precies zo ingesteld als de huidige map - /set_name/file.jpg. De onderstaande schermafbeeldingen tonen de demoversie van Rekognition die enkele van de gemaakte foto's verwerkt. Je zult merken dat het ongelooflijk nauwkeurig is, ondanks eventuele problemen met de foto.

Sample CaptureSample Capture

We kunnen dit proces automatiseren! Zodra alle kaarten naar de bucket zijn geüpload, kunnen we de onderstaande code uitvoeren om onze gedetecteerde tekst in een csv uit te voeren:

python Rekognize_S3.py 

Hier waren de resultaten van de beeldverwerking. Ik twijfel er niet aan dat dit veel hoger zou zijn geweest als de foto's van betere kwaliteit waren geweest. De andere twee belangrijkste problemen die ik tegenkwam, waren (1) het lettertype - veel van de lettertypen hadden tekens die bedrieglijk dicht in de buurt kwamen van waar ik zelfs moeite had om ze te ontcijferen en (2) verlichting. Van de 920 kaarten die ik heb gescand:

  • 619 waren exact (67,3%)
  • 201 verschilden met één letter (21,8%)
  • 100 verschilden met meer dan één letter (10,9%)

Lief! Daarna schreef ik een snel python-script om de API van TCGplayer te bereiken voor de marktprijs van de kaarten*. Uiteindelijk had ik voor $ 275 aan commons, ongebruikelijks en rares! (Ik heb alle kaarten verwijderd waarvan ik wist dat ze al geld waard waren)

*Bewerk 27-05-2018: Ik heb het Rekognition-script bijgewerkt om de gedetecteerde tekst in realtime uit te voeren tegen de API van de TGCplayer (en naar een bestand te schrijven). Houd er rekening mee dat er een aanvraagprocedure is voor de API.

Afsluiten

Ik hoop dat dit je inspireert om die oude kaarten uit de kast te halen en er iets mee te doen! Ik ben van plan dit nog eens te doen met sportkaarten en diverse andere sets. Veel plezier met scannen!

Bron:  Trading Card Scanner/Organisator


Productieproces

  1. Amber
  2. Gecondenseerde Soep
  3. Goaliemasker
  4. Guillotine
  5. Grafsteen
  6. Bokszak
  7. Silicium
  8. Ukelele
  9. Wodka
  10. Speelkaarten
  11. IJzer