OCR for Plates & Containers

Job ID: 39980841

Budget: $250 – $750 USD

I need a custom OCR engine that can read vehicle license plates and container codes directly from photos or video frames. The system must accurately extract the complete alphanumeric sequence—letters and numbers—and return it as plain text and insert it into the system's database. The system must be delivered ready and compiled for future installations on Windows.
Desired Knowledge:

The minimum knowledge to get this system (Node.js backend, Python OCR worker, React frontend, PostgreSQL, Docker) up and running.

Backend (minimum)

Basic Node.js: installing dependencies (npm), running scripts (npm start).

Express: understanding routes, middlewares, body parsing.

JWT and bcrypt: simple authentication and password hashing.

Basic PostgreSQL and SQL: creating a database, running schema.sql, connecting via connection string.

Basic .env knowledge: configuring environment variables (DATABASE_URL, JWT_SECRET, UPLOAD_DIR).

Worker OCR (minimum)

Basic Python: creating an environment (venv), installing packages (pip).

OpenCV and pytesseract: installing and running frame reading; understanding Tesseract's native dependencies.

psycopg2: Connect and insert records into Postgres.

File handling: Save images to disk (UPLOAD_DIR).

Frontend (minimum)

Node.js/NPM to execute React build/dev.

Basic React: Components, state, routing (react-router).

Axios/HTTP: API calls with Authorization header (Bearer token).

Basic HTML/CSS to execute/adjust the interface.

Infrastructure and operation (minimum)

Docker and docker-compose: Build images and deploy the stack with `docker compose up --build`.

Basic local networking: Private IPs, LAN subnets; adjust `ALLOWED_LAN_CIDR` and Nginx bind (if used).

File and volume permissions: Ensure the container/host can read/write UPLOAD_DIR.

Basic firewall (ufw/iptables) to restrict LAN access (optional but recommended).

Operational security (minimum)

Manage secrets: edit .env with strong JWT_SECRET; do not leave secrets public.

Secure DB access: use strong passwords in DATABASE_URL.

Limit exposure: do not publish ports publicly; use internal Docker network or bind to LAN IP.

Testing and debugging (minimum)

Logs: read Docker logs (docker compose logs backend/worker) for troubleshooting.

HTTP tools: use curl / Postman to test endpoints (/auth/login, /cameras, /events).

Video testing: know how to use a local video file as an RTSP source to test the worker.

Acceptance Criteria
• ≥ 95% character-level accuracy on a blind validation set that I will provide
• Correct ordering of mixed letters/numbers (e.g., ABC-1234, MSCU1234567)
• Processing time less than 500 ms per 1080p image on a standard i7 CPU

A first demonstration should inform me what is realistically feasible. I have a lot in mind and written about the project.