我正在尝试编写一个脚本来读取一系列pdf,使用tesseract包对它们进行OCR,然后使用我可以提取的文本进行操作。
到目前为止,我的情况如下:
ReportDensity <- list()
AllReports <- list.files(path = "path",pattern = "*.PDF",full.names=TRUE)
然后我需要调用每个pdf的页码,以便我可以读取图像数据
for (i in seq(AllReports))
ReportDensity[[i]] <- pdf_info(AllReports[[i]])
ReportDensity <- lapply(ReportDensity, `[[`, 2)
现在,我想要做的是列出单独图像文件的pdf的每个页面,以便我可以对其进行OCR。
for (i in seq(AllReports))
for (j in 1:ReportDensity[[i]])
(assign(paste0("Report_",i,"_Page_",j),image_read_pdf(AllReports[[i]],pages = ReportDensity[j])))
我收到的错误消息是:
“poppler_render_page中的错误(loadfile(pdf),page,dpi,opw,upw,antialiasing,: 页面无效。“
我认为是因为我错误地写了循环。我通过手动输入图像/页码来测试代码,并正确加载。
我希望最终的结果是一系列“Report_ReportNumber_PageNumber”形式的图像文件然后我可以处理。
答案 0 :(得分:0)
pdf主要是文本(最常见); 我通常使用python的pdf2txt从pdfs中提取文本,通过调用
在shell上逐页运行i=pagenumber
system(paste("pdf2txt -p", i, "-o text.txt pdffile.pdf"))
然后你可以从每个页面grep文本; flag -o可以输出一个html或xml,您可以使用library(rvest)
[pdfimages][2] extracts the images contained in pdfs, you can OCR those:
system(paste("pdfimages -f", i, "-l", i, "-p -png pdffile.pdf imagefile"))
可能会从单个页面输出很多png,它们编号为:
system(paste0("tesseract imagefile-",i,"-006.png out6"))
tesseract有几个参数,你必须在得到一个不错的结果之前调整