Home
TR

Troubleshooting

Common problems and fixes: recognition, camera, voice, and sync.

When something doesn’t work the way you expect, the fix is usually a few taps away. This page walks through the most common issues in QCR Scanner in a symptom–cause–fix order: text recognition, camera and permissions, QR reading, voice input, webhook sync, ads, and the AI rule generator. Each section is kept short and practical, with links to the full guide when you need more depth.

Small text won’t read

Symptom: a serial number, digits, or dense text are not recognized, or come out wrong. Cause: the default Snap mode (⚡) grabs the latest frame from the hot 1080p camera stream and processes it in memory instantly — very fast, but it can struggle with small or tightly packed text.

  • Tap the lightning/HD button on the left rail to switch to Quality mode. A full-resolution capture with on-device native decoding gives the highest accuracy for small digits. Your choice is saved on the device.
  • Use the zoom slider to enlarge the target; the bigger the text in the frame, the better it reads.
  • Turn on the torch in low light.
  • If it looks blurry, tap to focus or use the focus lock.
  • Size the central rectangle in the viewfinder so it wraps only the target text; surrounding noise can throw off recognition.

Tip: If a single frame contains several values, use Smart Extract to pull the matching parts out of noisy text automatically. For all modes and camera controls, see Scanning.

The camera won’t open

Symptom: the scanning screen stays black or the camera doesn’t start. Cause: most often the camera permission was denied, or another app is holding the camera.

  • Grant the Camera (CAMERA) permission for QCR Scanner in your phone settings. If the permission was denied earlier, the app may not be able to ask again — enable it manually from system settings.
  • Close other apps that use the camera and relaunch QCR Scanner.
  • If it persists, restarting the device clears a stuck camera session.

A QR code won’t scan

Symptom: a QR/barcode is in the frame but isn’t recognized. Reminder: when you tap, OCR and QR scanning run in parallel, and a detected QR takes priority.

  • Widen the rectangle in the viewfinder so the whole QR code fits inside it.
  • Adjust the distance by holding the phone a bit farther or closer; too close and the camera may fail to focus.
  • Reduce glare and shadow; change the angle for codes shown on bright screens.
  • If the code is creased, faded, or partly covered, flatten or clean it.

Voice input isn’t working

Symptom: speaking doesn’t add a value, or the microphone doesn’t respond. Cause: the microphone permission may be missing, or the speech language you need isn’t installed on the device.

  • Grant the Microphone (RECORD_AUDIO) permission in your phone settings.
  • Voice input uses your device’s speech recognition engine, so the language pack for the language you speak must be installed on the phone.
  • Make sure you’ve picked the right mode: push-to-talk listens for one phrase, continuous listens non-stop and splits by digit count, and verify confirms the OCR result aloud.
  • In noisy places, speak more clearly and slowly; background sound lowers recognition quality.

See Voice input for details.

Webhook sync fails

Symptom: values don’t reach the server, or sync reports an error. QCR Scanner retries every send with 3 attempts and exponential backoff (1s/2s/4s); if it still fails, check the following.

  • Verify the URL: it must be the full, correct address. The test connection on the sync screen probes the endpoint by sending a {"action":"ping"} body.
  • If your server requires authentication, set the optional Authorization header.
  • Check your network connection. When you’re offline, sends are queued in the offline outbox and retried automatically once connectivity returns (and again when the app comes to the foreground), so most outages resolve on their own.
  • Make sure your payload matches what the server expects. A single send looks like this:
{
  "action": "add",
  "listName": "Warehouse",
  "item": {
    "value": "ABC123",
    "isQR": false,
    "source": "ocr",
    "createdAt": "2026-06-21T10:00:00Z",
    "isSeparator": false
  },
  "timestamp": "2026-06-21T10:00:00Z"
}

A batch send (“Send all”) uses the same shape with an items[] array and a count field. For end-to-end setup and a ready-made Cloudflare Worker example, see Webhook sync.

Ads and Pro

QCR Scanner is free and includes an AdMob banner ad. An ad-free Pro subscription is planned but not available yet, so there is currently no option to remove the ad. The banner may take a moment to load and can appear empty on a weak connection. All scanning, validation, and sync features are fully included in the free version.

The AI rule generator errors out

Symptom: you get an error while generating a rule from plain language. Cause: usually the API key is missing or invalid, or your quota is exhausted.

  • Enter your own Gemini API key from Google AI Studio; the key is stored on the device.
  • Make sure the key is valid and active; “unauthorized” errors usually mean a wrong or expired key.
  • Check that you haven’t exceeded your account quota/limit; requests are rejected once the quota is used up.
  • The request is sent only when you ask and carries only the prompt you typed (no image). Make sure you have an internet connection.

See AI rule generator for more.

Note: Each permission only kicks in when you use the related feature. The camera is needed for scanning, the microphone for voice input, and the internet only for webhook sync and the AI rule generator. For what stays on the device and what touches the network, see Privacy.

QCR Scanner is made by ReviseTouch.

Next steps

  • Scanning — Snap and Quality modes, the viewfinder, and camera controls.
  • Webhook sync — the queue, retries, and payload format.
  • Voice input — the three modes and permissions.
  • FAQ — quick answers and related guides.