Why this exists
It started with friends in the United States identifying one-cent coins under microscopes, coin by coin, by hand. Cataloguing cents means answering the same two questions thousands of times (what year, which mint) and very little modern computer vision tooling exists for collectible coins. That is a job for software: repetitive, narrow and precise.
Coin Recognition answers those two questions from a photograph. The interesting part is that no single reader can do it well. OCR is excellent on a crisp, well-lit coin and unreliable on a worn one; a machine-learning classifier over shape and texture features is the reverse, steadier where the text has faded. So the tool reads every coin twice, compares the confidence of both answers and lets a hybrid layer commit to one, with a cheap decisive guard on top: a mint mark only appears on cents in specific spans of years, so an otherwise plausible read pairing an impossible mint and year is rejected before it reaches you.
It is equally honest about its limits. Labelled training data for coins is scarce, so accuracy on badly worn cents is bounded and the tool says so: every read arrives with its confidence rather than a false certainty. The scope is deliberately narrow too. The historical validation is penny-specific, so the tool does US cents properly instead of all coins poorly.
What works now is a local PySide6 desktop application over OpenCV, scikit-learn and Tesseract: single images with tunable enhancement or whole folders in batch, partial coins accepted, results exported to CSV or JSON and nothing leaving your machine.
Full reasoning at crankthecode.com.