OniiOniiChan/LogisticsDataExtractionValidationSystem
0
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 