Search code examples
rocrabbyy

Error in ocrFile function in AbbyyR package


While I was using Abbyy cloud SDK for OCR, I keep on getting the error below when I try to use the ocrFile function which is inside the AbbyyR package.

" Error in curl_download(finishedlist$resultUrl[res$id == finishedlist$id], : Argument 'url' must be string. "

When I send the files to the cloud and process them everything works fine but when the cloud returns the files there is a problem in downloading them. I thought that it might be a network or certificate problem but I can't solve the problem.

Thanks in advance


Solution

  • There is a problem in source code, it needs as.character() function for url. I updated ocrFile function as follows:

        install.packages("curl")
        library(curl)
    
        new_ocrFile<-function (file_path = "", output_dir = "./", exportFormat = c("txt", 
                                                                      "txtUnstructured", "rtf", "docx", "xlsx", "pptx", "pdfSearchable", 
                                                                      "pdfTextAndImages", "pdfa", "xml", "xmlForCorrectedImage", 
                                                                      "alto"), save_to_file = TRUE) 
        {
          exportFormat <- match.arg(exportFormat)
          res <- processImage(file_path = file_path, exportFormat = exportFormat)
          while (!(any(as.character(res$id) == as.character(listFinishedTasks()$id)))) {
            Sys.sleep(1)
          }
          finishedlist <- listFinishedTasks()
          res$id <- as.character(res$id)
          finishedlist$id <- as.character(finishedlist$id)
          if (identical(save_to_file, FALSE)) {
            res <- curl_fetch_memory(as.character(finishedlist$resultUrl[res$id == 
                                                              finishedlist$id]))
            return(rawToChar(res$content))
          }
          curl_download(as.character(finishedlist$resultUrl[res$id == finishedlist$id]), 
                        destfile = paste0(output_dir, unlist(strsplit(basename(file_path), 
                                                                      "[.]"))[1], ".", exportFormat))
        }
    

    I hope, it helps.