return result.returncode fine_read_cli("scan.jpg", "output/result", "docx") Batch Processing with CLI from concurrent.futures import ThreadPoolExecutor from tqdm import tqdm def batch_ocr_cli(input_folder, output_folder, max_workers=4): """Process all images in a folder.""" input_folder = Path(input_folder) output_folder = Path(output_folder) output_folder.mkdir(exist_ok=True)

def download_result(self, task_id, output_path): """Download OCR result.""" response = self.session.get(f"self.base_url/api/v1/tasks/task_id/result") with open(output_path, 'wb') as f: f.write(response.content) return output_path

# Configure PDF export settings export_params = "PDFExportMode": 1, # 1 = Text and pictures (searchable) "PDFAComplianceMode": 1, # PDF/A-1b "PreserveOriginalPageSize": True

def process_invoice(self, image_path): """Extract structured data from invoice image.""" # Extract text from zones extracted = {} for field, zone in self.zones.items(): text = self.fr.zonal_ocr(image_path, [zone])[0] extracted[field] = text.strip() # Parse line items from full text full_text = self.fr.get_recognized_text(image_path) line_items = self._extract_line_items(full_text) # Parse and clean invoice = 'number': self._clean_invoice_number(extracted['invoice_number']), 'date': self._parse_date(extracted['invoice_date']), 'due_date': self._parse_date(extracted['due_date']), 'total': self._parse_amount(extracted['total_amount']), 'vendor': extracted['vendor_name'], 'vendor_address': extracted['vendor_address'], 'line_items': line_items, 'processed_at': datetime.now().isoformat() return invoice