【问题标题】:R - using Magick to mass read pdfs. issue with loopingR - 使用 Magick 大量阅读 pdf。循环问题
【发布时间】:2018-04-12 21:59:14
【问题描述】:

我正在尝试编写一个脚本来读取一系列 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 中的错误(加载文件(pdf),页面,dpi,opw,upw,抗锯齿,: 无效页面。”

我认为这是因为我错误地编写了循环。我已经通过手动输入图像/页码来测试代码,并且可以正确加载。

我希望最终结果是一系列“Report_ReportNumber_PageNumber”形式的图像文件,然后我可以处理这些文件。

【问题讨论】:

    标签: r pdf imagemagick ocr


    【解决方案1】:

    pdf 主要是文本(大多数情况下); 我通常使用python的pdf2txt从pdf中提取文本,通过调用在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 有几个参数你必须调整才能获得不错的结果

    【讨论】:

    • 我还不精通python,所以我不确定我能用它做多少。话虽如此,这看起来很有用,我感谢您的回复!
    • 你使用的是linux还是windows? “python”部分只是一个用python编写的程序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2013-04-01
    • 2022-12-05
    相关资源
    最近更新 更多