1
現在、多くのpdfファイルをデータフレームに読み込む関数を作成しようとしています。私の最終的な目標は、pdfファイルから特定の情報を読み取り、各行の保険プラン名と個々のプラン価格、家族計画価格など必要な情報で構成される列を含むdata.frameに変換することです。 answer given by someone for a similar question in the pastに続いています。しかし、私は間違いを続けている。ここに私が練習している2つの異なるファイル(1と2)へのリンクがあります。ここでpdfファイルをdata.framesに変換する
は、以下の私のコードとエラー、次のとおりです。このアプローチの前に
PDFtoDF = function(file) {
dat = readPDF(control=list(text="-layout"))(elem=list(uri=file),
language="en", id="id1")
dat = c(as.character(dat))
dat = gsub("^ ?([0-9]{1,3}) ?", "\\1|", dat)
dat = gsub("(, HVOL)","\\1 ", dat)
dat = gsub(" {2,100}", "|", dat)
excludeRows = lapply(gregexpr("\\|", dat), function(x) length(x)) != 6
write(dat[excludeRows], "rowsToCheck.txt", append=TRUE)
dat = dat[!excludeRows]
dat = read.table(text=dat, sep="", quote="", stringsAsFactors=FALSE)
names(dat) = c("Plan", "Individual", "Family")
return(dat)
}
files <- list.files(pattern = "pdf$")
df = do.call("rbind", lapply(files, PDFtoDF))
Error in read.table(text = dat, sep = "", quote = "", stringsAsFactors =
FALSE) : no lines available in input
、私はpdftoolsパッケージや正規表現を使用してきました。このアプローチは、最上位にある計画名などのドキュメントの一部のパターンを明確にすることが困難な点を除いて機能しました。私は、私が今使っている方法論が、私のためにテキストを別々の文字列に抽出するので、助けになると思っていました。はい、それはREADTEXTパッケージと、その簡単です
require(readtext)
df <- readtext("*.pdf")
:
pdfのテキスト用に作成した "text"変数を出力すると、その変数の一部がコンソールに表示され、と表示されます。これは、pdfの情報はすべて保存されていますが、長すぎてコンソールに表示できないということですか? これは方法で動作する可能性があります - ありがとう!その変数を複数の変数に分割し、必要な情報を各自のセル/変数に入れる方法を考え出すことができます。私は、それを多くのpdfにするためにループを作る方法を学ぶのは難しいことではないと思います。 –
これは単なるdata.frameであり、textカラムは(あなたの例では) 'df $ text'と呼ばれています。しかし、** readtext **パッケージは、** tibble **から印刷メソッドを借用しているので、コンソールにオブジェクトのバージョンが表示されます。切り捨ては、印刷のためのものであり、オブジェクトに対して行われたものではありません。 –
私は助けに感謝します!私の最終的な目標は、価格設定のデータだけでなく、データベースに格納される各pdfの特定の言い回し/文章を取得することです。有益なこのプロジェクトまたはパッケージの最適な方法論に関する助言をお持ちですか?私は純粋に基本的な正規表現を使用してパターンを見つけ、それらを必要な変数に分割してから、列変数に変換することが最良のアプローチではないかもしれないと心配しています –