dots-ocr-idcard / scripts /test_production_curl.sh
tommulder's picture
feat(api): fast FastAPI app + model loader refactor; add mock mode for tests\n\n- Add pyproject + setuptools config and console entrypoint\n- Implement enhanced field extraction + MRZ heuristics\n- Add response builder with compatibility for legacy MRZ fields\n- New preprocessing pipeline for PDFs/images\n- HF Spaces GPU: cache ENV, optional flash-attn, configurable base image\n- Add Make targets for Spaces GPU and local CPU\n- Add httpx for TestClient; tests pass in mock mode\n- Remove embedded model files and legacy app/modules
211e423
#!/bin/bash
# Production API Test using curl
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Production API URL
API_URL="https://algoryn-dots-ocr-idcard.hf.space"
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
# Check if test image exists
if [ ! -f "tom_id_card_front.jpg" ]; then
print_error "Test image not found: tom_id_card_front.jpg"
exit 1
fi
print_status "Testing Production API at $API_URL"
# Health check
print_status "Checking API health..."
if curl -s -f "$API_URL/health" > /dev/null; then
print_success "Health check passed"
else
print_error "Health check failed"
exit 1
fi
# Test OCR endpoint
print_status "Testing OCR endpoint with tom_id_card_front.jpg"
# Make the API request
response=$(curl -s -w "\n%{http_code}" -X POST \
-F "file=@tom_id_card_front.jpg" \
"$API_URL/v1/id/ocr")
# Split response and status code
http_code=$(echo "$response" | tail -n1)
response_body=$(echo "$response" | head -n -1)
if [ "$http_code" -eq 200 ]; then
print_success "OCR request successful"
# Parse and display results
echo "$response_body" | jq -r '.request_id' | while read request_id; do
echo "Request ID: $request_id"
done
echo "$response_body" | jq -r '.processing_time' | while read processing_time; do
echo "Processing time: ${processing_time}s"
done
echo "$response_body" | jq -r '.detections | length' | while read detection_count; do
echo "Detections: $detection_count"
done
# Show extracted fields
echo "$response_body" | jq -r '.detections[0].extracted_fields | to_entries[] | select(.value != null) | "\(.key): \(.value.value) (confidence: \(.value.confidence))"' | while read field_info; do
echo " $field_info"
done
print_success "Production API test completed successfully!"
else
print_error "OCR request failed with status code: $http_code"
echo "Response: $response_body"
exit 1
fi