Spaces:
Sleeping
Sleeping
Commit History
-
v43: Improve VIN extraction with Korean transliteration and bbox zone detection
Korean PaddleOCR often misreads Latin VIN characters as Korean jamo or garbles them with spaces. This adds three new extraction strategies: - Korean→Latin character transliteration (ㅋ→K, ㅁ→M, etc.) - Bbox-based VIN zone detection (Y:19.5-23%, X:17-70% on cert) - Aggressive zone text cleanup with prefix-based matching Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b821cb1
-
v41: Fix owner name extraction for spaced OCR text
OCR often outputs '성 명 ( 명 칭 )' and '삼 환 교 통' with spaces between each character. Now strips spaces for label matching and collapses spaced Korean names. Also checks next 2 lines (not just 1) for the value row. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b451196 -
v40: Add purchase price (출고가격) field extraction
Extract '자동차출고(취득)가격(부가세제외)' from OCR text. Handles spaced-out Korean characters from OCR. Added to Excel output as '출고가격(원)' column. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e10c4da -
v33: Improve OCR accuracy - bbox extraction, Korean fuel types, VIN year, date
1. PaddleOCR 3.x bbox extraction: v3 API now returns ocr_results with bounding box coordinates, enabling coordinate-based field extraction that was previously only working on 2.x 2. Fuel type output unified to Korean: 'Gasoline'→'휘발유', 'Diesel'→'경유', 'Electric'→'전기', etc. Matches Korean UI/Excel headers 3. VIN model year decoding: When model year is not found by text parsing, decode it from VIN position 10 (ISO 3779 year code) 4. Registration date extraction: Prefer dates near '최초등록일' label instead of blindly picking the earliest date in the document Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>fe7f243 -
v28: Add PP-Structure layout analysis engine for form-aware OCR
Introduce 3-role dev management (Orchestrator/Dev/QAQC) and PP-Structure layout analysis to improve vehicle registration certificate recognition. - Add layout_engine.py: PP-Structure wrapper (singleton, 2.x/3.x compat) - Add form_parser.py: form-aware field extraction from tables + spatial proximity - Integrate ensemble pipeline in processor.py (layout supplements text parsing) - Graceful degradation when PP-Structure unavailable - 14 new tests, all passing - ENABLE_LAYOUT_ANALYSIS env var for toggling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a6c2f2d
-
v23: Fix fuel detection - Hydrogen before LPG, add H2/FCEV keywords
Hydrogen was misdetected as LPG because LPG was checked first. Now Hydrogen is checked first with expanded keywords: 수소, 수소전기, FCEV, 연료전지, HYDROGEN, H2. Also added engine/model hints for FC. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9ebdf6c -
v22: Fix owner name cleanup for bracketless OCR variants
OCR often drops/garbles brackets: (주)→주, (추]→추]. Now strips leading company-type char even without brackets. Tested: 주삼환교통, 추]삼환교통, (주,추)삼환교통 → all yield 삼환교통 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5ea5f89 -
v21: Fix owner name - use next-line extraction for table layout
Registration certs are tables where headers and values are on separate lines. Now finds 성명(명칭) header line and extracts company name from the line below it, not beside it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>aca3cd3 -
v20: Fix owner name extraction using ⑨ marker and robust label matching
- Label pattern now matches ⑨ 성명(명칭) with flexible spacing - Fallback: ⑨ marker, "9." prefix, 성명(명칭) flexible patterns - Cut owner name at ⑩/주소/double-space boundaries - Clean OCR variants like (주,추), (쥬) via wildcard regex Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>caee81e -
v19: Fix owner name cleanup, model name extraction, weight/capacity parsing
- Owner name: use flexible regex for OCR variants like (주,추), (쥬) etc. - Model name: greedy capture + fallback with ④ marker and known bus models - Total weight: cap regex to max 5 digits, validate <= 99999 kg - Passenger capacity: reject 0, require >= 2, look after kg zone not mm zone Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3a21165 -
v18: ISO 3779 VIN validation, OCR correction, and owner name cleanup
- Implement full VIN validator with check digit computation (ISO 3779) - Add OCR-aware VIN correction: I→1, O→0, Q→0, plus single-char ambiguity resolution (S↔5, B↔8, Z↔2, G↔6) using check digit - Parse VINs from space-stripped text (handles PaddleOCR splitting) - Decode WMI (Korean manufacturers) and model year from VIN - Add _clean_owner_name() to strip (주), 주식회사, (유), etc. - Show VIN validation details in summary output Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>88cd424 -
feat: improve VIN extraction and show OCR debug in summary (v17)
- Add near-valid VIN matching (15-17 chars with Korean prefix) - Add multi-line ⑥ marker patterns for VIN detection - Show OCR text preview and parsed fields in summary output - Increase PDF DPI from 150 to 200 for better OCR quality Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5d1a454 -
feat: major parser rewrite for robust field extraction (v16)
- Add label-independent fallback extraction for all fields - Fix fuel type: check CNG/LPG/Diesel before Electric in OCR text - Fix dimensions: use document-order sequential extraction from spec zone - Exclude engine displacement (cc) and power (Ps/rpm) from dimensions - Add post-validation to catch dimension/weight swaps - Broaden document verification (circled numbers, mm/kg patterns) - Handle PaddleOCR splitting values and units across lines - Show OCR text preview in skip messages for debugging Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8700fa9 -
fix: broaden document type verification and show OCR preview on skip (v15)
- Add more keyword variants: 자동차등록증서, 등록번호, 차량등록, etc. - Add flexible patterns for: 최초등록일, 제원관리, 원동기형식, 승차정원 - Accept documents with Korean VIN pattern (K + 16 chars) - Show OCR text preview in skip message for debugging Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4629f65
-
Remove dead code and fix issues from code review
- Delete src/main.py (imports deleted modules hybrid_engine, vin_logger) - Delete repro_hang.py (debug script importing deleted hybrid_engine) - Remove parse_hybrid(), _calculate_google_confidence(), _calculate_paddle_confidence() from car_registration.py - Fix test_processor.py to mock module-level _preprocessor instance instead of class - Remove redundant self.wb.save() from excel_writer.py append_row() - Remove leftover src/tools/ directory Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>66b38fd -
feat: add parse_single() method to CarRegistrationParser
Add parse_single() as a simpler alternative to parse_hybrid() for PaddleOCR-only mode. Includes vehicle_no filename fallback and fuel type determination. Add 3 TDD tests covering fuel type, all fields, and filename fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>fafec87 -
chore: remove unused files and __pycache__ from tracking
Remove Google Vision engine, hybrid engine, local engine duplicate, Google Sheets storage, VIN CSV logger, debug tools, and unused parsers. Remove __pycache__ bytecode and processed CSV files from git tracking. Prepare for HuggingFace Spaces deployment with PaddleOCR only. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5e08aaf
-
Add structured parser, template extractor, and fix OCR processing issues
Major changes: - Add structured_parser.py: Circled number (①-㉒) pattern-based extraction - Add template_extractor.py: Position-based field extraction - Fix RGBA PNG handling: Convert RGBA/LA/P to RGB before JPEG conversion - Fix special character filename issue: Sanitize temp file paths with UUID - Add multi-page PDF support with page-level processing - Add archive extraction support (zip, tar, rar, 7z) - Improve VIN extraction with position-based OCR error correction - Update .gitignore with proper exclusions Processing improvements: - 28,539 files processed with 0 errors (previous: 139 errors) - 7,150 files processed with 0 errors - VIN recognition improved with smart L/I/1 and E/I correction Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>0c20a6b
-
Remove .DS_Store files and update .gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>48c359e -
Migrate to local OCR (PaddleOCR) and add speed optimizations
- Replace Google Vision API with PaddleOCR 3.3+ for zero cloud costs - Add LocalOCREngine using PaddleOCR with Korean language support - Optimize processing speed (70-80s -> 11-12s per file, ~7x faster) - Use mobile detection model (PP-OCRv5_mobile_det) - Add image size limits and lower thresholds - Add parallel processing with multiprocessing (process_local_fast.py) - Fix document verification for PaddleOCR's spaced text output - Use temp directory for resized files instead of source directory - Add file copy feature: output files named as 차량번호_연료유형.ext Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>f3dce36
-
Initial commit
c5ce945