How hammadqaiser/esp32-cam-text-and-handwriting-reader works
This repository combines an ESP32 camera/streaming firmware area with a Capacitor text-reader app. The apparent user journey is viewing camera imagery in the app and recognizing text, but the sampled excerpts do not show the JavaScript camera-to-OCR flow, so that connection is left unverified. The graph preserves the camera server, RTSP, camera API, and native OCR capabilities visible in the tree and excerpts. Edges are limited to relationships shown in excerpts or the source index; unsampled wiring is not inferred.
Main entry points: main.js Reader app UI · esp32cam.cpp Camera API · app_httpd.cpp Camera HTTP server · NativeOcrPlugin.java Android OCR plugin
Components 22
Camera firmware
- Camera HTTP server
Text Recognition/lib/Camera Configuration/app_httpd.cpp - Camera page assets
Text Recognition/lib/Camera Configuration/camera_index.h - RTSP session
Text Recognition/lib/Camera Configuration/CRtspSession.cpp - Frame streamer
Text Recognition/lib/Camera Configuration/CStreamer.cpp - JPEG samples
Text Recognition/lib/Camera Configuration/JPEGSamples.cpp - OV2640 driver
Text Recognition/lib/Camera Configuration/OV2640.cpp - Firmware entry
Text Recognition/src/main.cpp
Camera library
- Camera API
Text Recognition/lib/esp32cam-main/src/esp32cam.cpp - Camera configuration
Text Recognition/lib/esp32cam-main/src/internal/config.cpp - Captured frame
Text Recognition/lib/esp32cam-main/src/internal/frame.cpp - Resolution handling
Text Recognition/lib/esp32cam-main/src/internal/resolution.cpp - MJPEG control
Text Recognition/lib/esp32cam-main/src/internal/mjpeg.cpp - Async web responses
Text Recognition/lib/esp32cam-main/src/esp32cam-asyncweb.h
Mobile app
- Reader app UI
esp32-text-app/src/main.js - Android host
esp32-text-app/android/app/src/main/java/com/esp32/textreader/MainActivity.java - iOS host
esp32-text-app/ios/App/App/SceneDelegate.swift
Native OCR
- Android OCR plugin
esp32-text-app/android/app/src/main/java/com/esp32/textreader/NativeOcrPlugin.java - iOS OCR plugin
esp32-text-app/ios/App/App/NativeOcrPlugin.swift
OCR runtime
- Tesseract assets
esp32-text-app/public/tesseract/tesseract-core.js
Other components
- App user
- ESP32 camera
- ML Kit OCR
Connections 14
- RTSP session → Frame streamer: streams frames
Text Recognition/lib/Camera Configuration/CRtspSession.cpp - Camera HTTP server → Camera page assets: serves assets
Text Recognition/lib/Camera Configuration/app_httpd.cpp - Camera API → Camera configuration: uses configuration
Text Recognition/lib/esp32cam-main/src/esp32cam.cpp - Camera API → Captured frame: captures frames
- Camera API → MJPEG control: supports MJPEG
- Async web responses → Captured frame: sends captured frame
Text Recognition/lib/esp32cam-main/src/esp32cam-asyncweb.h - Async web responses → MJPEG control: controls stream
Text Recognition/lib/esp32cam-main/src/esp32cam-asyncweb.h - Android host → Android OCR plugin: registers plugin
esp32-text-app/android/app/src/main/java/com/esp32/textreader/MainActivity.java - Android OCR plugin → ML Kit OCR: recognizes text
esp32-text-app/android/app/src/main/java/com/esp32/textreader/NativeOcrPlugin.java - App user → Reader app UI: uses
- Reader app UI → Camera HTTP server: requests camera image
- Reader app UI → Tesseract assets: may use OCR runtime
- Reader app UI → Android OCR plugin: may invoke native OCR
- ESP32 camera → Camera HTTP server: provides camera service