我一直在努力在R中进行OCR(读取PDF数据并将其转换为扫描图像)。阅读了这篇文章:http://electricarchaeology.ca/2014/07/15/doing-ocr-within-r/
这是一篇非常好的文章。
有效的步骤包括:
- 将pdf转换为ppm(图像格式)
- 使用ImageMagick将ppm转换为tif,以便使用tesseract(convert工具)
- 将tif转换为文本文件
根据链接帖子,上述3个步骤的有效代码如下:
lapply(myfiles, function(i){
# convert pdf to ppm (an image format), just pages 1-10 of the PDF
# but you can change that easily, just remove or edit the
# -f 1 -l 10 bit in the line below
shell(shQuote(paste0("F:/xpdf/bin64/pdftoppm.exe ", i, " -f 1 -l 10 -r 600 ocrbook")))
# convert ppm to tif ready for tesseract
shell(shQuote(paste0("F:/ImageMagick-6.9.1-Q16/convert.exe *.ppm ", i, ".tif")))
# convert tif to text file
shell(shQuote(paste0("F:/Tesseract-OCR/tesseract.exe ", i, ".tif ", i, " -l eng")))
# delete tif file
file.remove(paste0(i, ".tif" ))
})
前两个步骤进行得很好。(虽然处理4页PDF需要花费相当长的时间,但之后会考虑可扩展性,现在先尝试这是否有效)
运行时,前两个步骤正常。
在运行第三步骤时,即
shell(shQuote(paste0("F:/Tesseract-OCR/tesseract.exe ", i, ".tif ", i, " -l eng")))
我遇到了这个错误:
Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
或者说 Tesseract 崩溃了。
如果有任何解决方法或根本原因分析,将不胜感激。