R Shiny 如何从控制台显示状态消息 (pdf_ocr_text)

R Shiny how to show status messages from the console (pdf_ocr_text)

提问人:Subaru Spirit 提问时间:11/17/2022 最后编辑:Subaru Spirit 更新时间:11/18/2022 访问量:99

问:

例如,当我从pdftools使用时:,它将在R控制台中显示状态,如下所示。pdf_ocr_texttext1 <- pdf_ocr_text("0.pdf", dpi = 300)

Converting page 1 to 0_1.png... done!
Converting page 2 to 0_2.png... done!
Converting page 3 to 0_3.png... done!
Converting page 4 to 0_4.png... done!

但是当我在 Shiny 应用程序中使用它时,我如何显示此状态?因为我希望用户看到它正在被处理,而不是在他们单击按钮时什么都没有显示(这可能需要一段时间才能完成)?

在下面的可重现代码中,您可以将任何 pdf 文件导入其中,但您需要创建一个名为该文件夹的文件夹,该文件夹应位于 R 文件的同一文件夹中。还要在外部浏览器中运行应用程序,否则无法正常工作。www

library(tidyverse)
library(shiny)
library(pdftools)
library(tesseract)
library(tidytext)
library(reactable)
library(shinyFeedback)
library(shinyjs)
library(shinyalert)


ui <- shinyUI(fluidPage(
  useShinyjs(),
  useShinyalert(),
  shinyFeedback::useShinyFeedback(),
  
  sidebarLayout(
    sidebarPanel(
      titlePanel("Demo"),
      fileInput("file_import", "Upload Files ( . pdf format only)",
                multiple = T, accept = ".pdf"),
      disabled(actionButton("ocr_button","OCR (click this when nothing shows up)",
                            class = "btn-danger",
                            icon=icon("fa-sharp fa-solid fa-triangle-exclamation",
                                      lib = "font-awesome"))),
      textOutput("sometext"),
      tableOutput("files")
    ),
    
    mainPanel(
      uiOutput("pdfview"),
      reactableOutput("test")
    )
  )
))


server <- function(input, output, session) {
  ### display the pdf ########################################################
  x = reactiveVal(1)
  
  observeEvent(input$file_import,{
    enable("ocr_button")
    file.rename(input$file_import$datapath[x()], "0.pdf")
    file.copy("0.pdf","www", overwrite = T)
    
    output$pdfview <- renderUI({
      tags$iframe(style="height:1200px; width:100%", src="0.pdf")
    })
  })
  
  observeEvent(input$ocr_button, {
    ### OCR ###########################################################
    text1 <- reactive({pdf_ocr_text("0.pdf", dpi = 300)})
    ######################################################################
    output$sometext = renderText({
      text1()
    })
  })
}

shinyApp(ui, server)
R 闪亮的 OCR 镶嵌 PDF工具

评论

0赞 Ed_Gravy 11/17/2022
请将您的代码添加到问题中。
1赞 Subaru Spirit 11/17/2022
添加了可重现的代码
0赞 SmokeyShakers 11/18/2022
这些可能是消息。这个问题可能会有所帮助
0赞 Subaru Spirit 11/18/2022
@SmokeyShakers 在提出这张票之前,我看过那个,但不幸的是,这似乎对这个案子没有帮助
2赞 lz100 11/20/2022
您看到的文本来自 C++ 代码,该代码在 R 中显示为标准输出,而不是 R 典型异常(消息、警告、错误),因此它与您在 R 中使用的方法相同。在 Shiny 中,这仍然是一个具有挑战性的话题,需要实时捕获并将其发送到 UI。所以现在的简短回答是,不,你不能。cat

答: 暂无答案