目前我有一个用于单词搜索的代码,我们可以搜索多个单词并在数据帧中写出这些匹配的单词吗? (澄清,请参阅此post)这是akrun's解决方案,适用于一个单词。 这是代码:
library(pdftools)
library(tesseract)
All_files <- Sys.glob("*.pdf")
v1 <- numeric(length(All_files))
word <- "school"
df <- data.frame()
Status <- "Present"
for (i in seq_along(All_files)){
file_name <- All_files[i]
cnt <- pdf_info(All_files[i])$pages
print(cnt)
for(j in seq_len(cnt)){
img_file <- pdftools::pdf_convert(All_files[i], format = 'tiff', pages = j, dpi = 400)
text <- ocr(img_file)
ocr_text <- capture.output(cat(text))
check <- sapply(ocr_text, paste, collapse="")
junk <- dir(path= paste0(path, "/tiff"), pattern="tiff")
file.remove(junk)
br <-if(length(which(stri_detect_fixed(tolower(check),tolower(word)))) <= 0) "Not Present"
else "Present"
print(br)
if(br=="Present") {
v1[i] <- j
break}
}
Status <- if(v1[i] == 0) "Not Present" else "Present"
pages <- if(v1[i] == 0) "-" else
paste0(tools::file_path_sans_ext(basename(file_name)), "_", v1[i])
words <- if(v1[i] == 0) "-" else word
df <- rbind(df, cbind(file_name = basename(file_name),
Status, pages = pages, words = words))
}
这里我们只搜索一个单词,school
。我们可以搜索多个字词,例如school
,gym
,swimming pool
吗?
预期的O / P
fileName Status Page Words TEXT
test.pdf Present test_1 gym I go gym regularly
test.pdf Present test_3 school Here is the next school
test1.pdf Present test1_4 swimming pool In swimming pool
test1.pdf Present test1_7 gym next to Gold gym
test2.pdf Not Present - -
fileName =文件名称
状态 =如果找到任何字词,则“显示”否则“不存在”
Page =此处“_1”,“_ 3”定义找到该单词的页码;;页面上显示“test_1”字样“健身房”,并在页面“test_3”上找到“学校”字样。
单词 =找到所有单词;;在test.pdf文件的第1页和第3页只找到“健身房”和“学校”,在test1.pdf文件的第4页和第7页只找到“游泳池”和“健身房”。
TEXT =这是找到单词的文字
对此相关的任何建议都会有所帮助。
由于
答案 0 :(得分:1)
使用外部循环浏览目录中的每个PDF。然后,您将浏览PDF的所有页面并在内部循环中提取文本。您想检查每个文档是否至少有一个页面包含//ajax request
function tampilkan() {
var data_table = "";
var head_table = "";
$.ajax({
url: "showkaryawan/da",
dataType: "json",
success: function(data) {
$('#oo').empty();
head_table +="<thead><tr class='bg-info'><th width='10%'>ID Karyawan</th><th width='30%'>Nama Karyawan</th><th width='15%'>Action</th></tr></thead>";
for (var i =0; i<data.length; i++) {
var id = data[i].id;
var nama = data[i].nama;
data_table +="<tr>";
data_table +="<td>"+id+"</td>";
data_table += "<td>"+nama+"</td>";
data_table += "<button data-id ="+id+" data-nama="+nama+" class="detailButton">Detail</button>";
data_table += "<td></td></tr>";
}
$('#oo').append(head_table);
$('#oo').append(data_table);
}
});
}
//click event handler
$('.detailButton').click(function() {
var id = $(this).data('id')
var nama = $(this).data('nama');
alert(id);
alert(name);
});
,school
或gym
。您要使用的返回值是:
swimming pool
或Present
的PDF文档数量的长度向量。右?
您可以跳过循环中的几个步骤,尤其是在将PDF转换为TIFF并使用Not present
从它们中读取文本时:
ocr
它不像我想的那样可读。可能是因为很少要求w.r.t.输出需要较小的中间步骤,使代码看起来有点混乱。它运作良好,但