#!/usr/bin/env bash # Quick tester for Dots.OCR debug mode using curl. # # Usage examples: # scripts/test_debug_ocr.sh -u http://localhost:7860 -f scripts/tom_id_card_front.jpg -d # scripts/test_debug_ocr.sh -u https://.hf.space -f scripts/tom_id_card_front.jpg -d -r '{"x1":0,"y1":0,"x2":1,"y2":0.5}' # # Notes: # - The `debug` form field enables per-request debug logging on the server. # - You can also set env DOTS_OCR_DEBUG=1 on the server to enable globally. set -euo pipefail API_URL="http://localhost:7860" FILE_PATH="" ROI_JSON="" ENABLE_DEBUG=false usage() { echo "Usage: $0 -u -f [-d] [-r '']" >&2 echo " -u API base URL (default: ${API_URL})" >&2 echo " -f Path to image/PDF file to upload" >&2 echo " -d Enable per-request debug logging (adds -F debug=true)" >&2 echo " -r ROI JSON string, e.g. '{\"x1\":0,\"y1\":0,\"x2\":1,\"y2\":0.5}'" >&2 exit 1 } while getopts ":u:f:r:d" opt; do case ${opt} in u) API_URL="$OPTARG" ;; f) FILE_PATH="$OPTARG" ;; r) ROI_JSON="$OPTARG" ;; d) ENABLE_DEBUG=true ;; *) usage ;; esac done if [[ -z "$FILE_PATH" ]]; then echo "Error: file path is required." >&2 usage fi if [[ ! -f "$FILE_PATH" ]]; then echo "Error: file not found: $FILE_PATH" >&2 exit 2 fi echo "🚀 Testing Dots.OCR API at $API_URL" echo "File: $FILE_PATH" if [[ -n "$ROI_JSON" ]]; then echo "ROI: $ROI_JSON" fi echo "Debug: $ENABLE_DEBUG" CURL_ARGS=( -sS -X POST "$API_URL/v1/id/ocr" -F "file=@$FILE_PATH" ) if [[ -n "$ROI_JSON" ]]; then CURL_ARGS+=( -F "roi=$ROI_JSON" ) fi if [[ "$ENABLE_DEBUG" == true ]]; then CURL_ARGS+=( -F "debug=true" ) fi # Pretty-print with jq if available if command -v jq >/dev/null 2>&1; then curl "${CURL_ARGS[@]}" | jq '.' else echo "(Install jq for pretty JSON)" curl "${CURL_ARGS[@]}" fi echo "" echo "Done. Check server logs for detailed debug output when enabled."