Japanese Residence Card Reader

A privacy-first Windows application that reads and verifies Japanese residence-card information with a compatible USB NFC reader. Card processing remains on the local computer.

Japanese Residence Card Reader application interface
  • Role: Research, product design, full-stack development, hardware integration, testing, documentation, and release engineering
  • Tech: Python, FastAPI, PC/SC, PyCryptodome, Cryptography, ONNX Runtime, OCR, PyWebView

Challenge: make sensitive card information practical to review

Schools and employers may need to review residence status, period of stay, card number, address, and permission information. That information can be held in the card's IC chip, but accessing it normally requires compatible hardware, knowledge of the card structure, and careful handling of sensitive personal information.

The goal was not simply to read a card. It was to create a tool that authorised staff could use with a clear, narrow privacy boundary.

Solution: a focused local Windows application

The application communicates with a compatible USB NFC reader through PC/SC. The flow is deliberately simple: connect and select the reader, place the card on it, enter the printed card number, read the card, and compare the displayed fields with the physical card.

It reads structured IC-chip information, uses local OCR where a card generation stores a name or address as an image, and verifies the digital signature against supported trust material packaged with the application. No internet connection is required while reading a card.

Privacy was an architectural requirement

  • Local processing only: No cloud processing, accounts, telemetry, analytics, remote submission, or card-information database.
  • Minimal retained data: The application stores only the selected reader setting; it does not keep raw IC, APDU, TLV, photograph, or complete-card-image data.
  • Deliberate boundaries: It does not provide bulk scanning, remote reader operation, My Number or JPKI access, or automated decisions about a person's residence status.

The application is designed to help one authorised person review one card on the computer in front of them.

Validation and visible uncertainty

The application was tested with more than 60 newer-generation genuine cards and around 10 older-generation cards, alongside an automated test suite that uses synthetic data only.

OCR-derived values are presented for comparison with the physical card, not as unquestionable truth. Signature verification is likewise explained as a cryptographic check, not a complete validity decision. The interface keeps those limits visible for the person performing the review.

Result: a safer path through a complex workflow

The project turns a technically complex task into a short, understandable workflow for authorised staff. It combines local-first processing, clear limits, bilingual guidance, and realistic hardware testing without presenting more certainty than the software can provide.

This is an independently developed open-source project and is not affiliated with, endorsed by, approved by, or certified by the Immigration Services Agency of Japan or the Ministry of Justice.