CoolFace
Apppublic

OniiOniiChan/LogisticsDataExtractionValidationSystem

sourceHugging Faceupdated 7mo agoView on Hugging Face
0likes
example_usage.py183 linesDownload Raw Back to root
1"""2Example script demonstrating how to use AIExtractor and CrossCheckValidator.3"""4 5import os6import sys7from pathlib import Path8 9# Add parent directory to path10sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))11 12from backend.extractor.ai_extractor import AIExtractor13from backend.services.validator import CrossCheckValidator14 15 16def example_extract_single_file():17    """Example: Extract data from a single file."""18    print("\n" + "="*60)19    print("Example 1: Extract data from a single file")20    print("="*60)21    22    # Initialize extractor23    extractor = AIExtractor()24    25    # File path (replace with your actual file)26    file_path = "sample_invoice.pdf"27    28    if not os.path.exists(file_path):29        print(f"โŒ File not found: {file_path}")30        print("   Please provide a valid PDF file path")31        return None32    33    try:34        print(f"\nExtracting data from: {file_path}")35        data = extractor.extract_data(file_path)36        37        print("\n๐Ÿ“„ Extracted Data:")38        print(f"  Document Type: {data.doc_type}")39        print(f"  BL Number: {data.bl_no}")40        print(f"  Invoice Number: {data.invoice_no}")41        print(f"  Shipper: {data.shipper}")42        print(f"  Consignee: {data.consignee}")43        print(f"  Vessel: {data.vessel}")44        print(f"  Total Weight: {data.total_weight} KG")45        print(f"  Total Packages: {data.total_packages}")46        print(f"  Containers: {len(data.containers)}")47        for container in data.containers:48            print(f"    - {container.container_no} (Seal: {container.seal_no})")49        print(f"  HS Code Suggestions: {', '.join(data.hs_code_suggestions)}")50        51        return data52        53    except Exception as e:54        print(f"โŒ Error extracting data: {e}")55        return None56 57 58def example_cross_check():59    """Example: Cross-check multiple documents."""60    print("\n" + "="*60)61    print("Example 2: Cross-check multiple documents")62    print("="*60)63    64    # Initialize extractor and validator65    extractor = AIExtractor()66    validator = CrossCheckValidator()67    68    # Files to process (replace with your actual files)69    files = [70        "sample_invoice.pdf",71        "sample_packing_list.pdf",72        "sample_bill_of_lading.pdf"73    ]74    75    # Check if files exist76    missing_files = [f for f in files if not os.path.exists(f)]77    if missing_files:78        print(f"\nโŒ Files not found: {', '.join(missing_files)}")79        print("   Please provide valid PDF files")80        return81    82    print(f"\nProcessing {len(files)} documents...")83    84    try:85        # Extract data from all files86        extracted_data = []87        for idx, file_path in enumerate(files, 1):88            print(f"\n[{idx}/{len(files)}] Extracting from: {file_path}")89            data = extractor.extract_data(file_path)90            extracted_data.append(data)91            print(f"    โœ“ {data.doc_type} extracted")92        93        # Cross-check data94        print("\n๐Ÿ” Cross-checking documents...")95        flags = validator.cross_check(extracted_data)96        summary = validator.generate_summary(flags)97        98        # Display results99        print("\n๐Ÿ“Š Validation Results:")100        print(f"  Status: {summary['status']}")101        print(f"  Total Issues: {summary['total_issues']}")102        print(f"  Errors: {summary['errors']}")103        print(f"  Warnings: {summary['warnings']}")104        105        if summary['error_details']:106            print("\n๐Ÿ”ด Errors:")107            for error in summary['error_details']:108                print(f"  - Field: {error['field']}")109                print(f"    Message: {error['message']}")110        111        if summary['warning_details']:112            print("\n๐ŸŸก Warnings:")113            for warning in summary['warning_details']:114                print(f"  - Field: {warning['field']}")115                print(f"    Message: {warning['message']}")116        117        return summary118        119    except Exception as e:120        print(f"โŒ Error during cross-check: {e}")121        return None122 123 124def example_batch_extract():125    """Example: Extract data from multiple files."""126    print("\n" + "="*60)127    print("Example 3: Batch extract from multiple files")128    print("="*60)129    130    extractor = AIExtractor()131    132    files = [133        "sample_invoice.pdf",134        "sample_packing_list.pdf"135    ]136    137    # Check if files exist138    missing_files = [f for f in files if not os.path.exists(f)]139    if missing_files:140        print(f"\nโŒ Files not found: {', '.join(missing_files)}")141        return142    143    try:144        print(f"\nExtracting data from {len(files)} files...")145        data_list = extractor.extract_data_batch(files)146        147        print(f"\nโœ… Successfully extracted data from {len(data_list)} files\n")148        149        for idx, data in enumerate(data_list, 1):150            print(f"[{idx}] {data.doc_type}")151            print(f"    BL: {data.bl_no}")152            print(f"    Weight: {data.total_weight} KG")153            print(f"    Packages: {data.total_packages}")154        155        return data_list156        157    except Exception as e:158        print(f"โŒ Error: {e}")159        return None160 161 162if __name__ == '__main__':163    print("\n๐Ÿš€ Logistics Data Extraction - Examples")164    print("=" * 60)165    166    # Uncomment the example you want to run:167    168    # Example 1: Extract single file169    # example_extract_single_file()170    171    # Example 2: Cross-check multiple documents172    # example_cross_check()173    174    # Example 3: Batch extract175    # example_batch_extract()176    177    print("\n" + "="*60)178    print("๐Ÿ“ To run examples:")179    print("   1. Replace 'sample_*.pdf' with your actual files")180    print("   2. Uncomment the example in main section")181    print("   3. Run: python example_usage.py")182    print("="*60)183