folder; $files = new \DirectoryIterator($folder); $output = []; foreach ($files as $file) { if ($file->isDir() or $file->getExtension() != 'xls') { continue; } $reader = IOFactory::createReader(ucfirst($file->getExtension())); $xls = $reader->load($file->getRealPath()); $data = []; $bank = 'unknown'; for ($s = 0; $s < $xls->getSheetCount(); $s ++) { $sheet = $xls->getSheet($s); foreach ($sheet->getRowIterator() as $row) { $r = []; foreach ($row->getCellIterator() as $cell) { $r []= $cell->getValue(); } $data []= $r; } foreach ($sheet->getDrawingCollection() as $drawing) { if ($drawing instanceof MemoryDrawing) { ob_start(); call_user_func( $drawing->getRenderingFunction(), $drawing->getImageResource() ); $imageContents = ob_get_contents(); $size = ob_get_length(); ob_end_clean(); $ocr = new TesseractOCR(); $ocr->imageData($imageContents, $size); $image = $ocr->run(); if (str_contains($image, 'BICE')) { $bank = 'BICE'; } if (str_contains($image, 'Scotiabank')) { $bank = 'Scotiabank'; } } } } $output []= ['bank' => $bank, 'filename' => $file->getBasename(), 'data' => $data]; } return $this->build($output); } protected function build(array $data): ?array { return $data; } }