機械に教える医学学習5 画像で覚える知識

  • こちらの続き
  • 言語情報ではない、画像で入力して、画像のまま記憶する知識もあるだろうという話になった
    • たとえば解剖
  • Rではテキストマイニングのパッケージtmの中にある関数readPDF()を使うと、pdfファイルを読み込んでその文字情報とメタ情報を取り出すものがあるらしい。このメタ情報にテキストの位置が入っていれば、文字付きのpdfを読み込ませて、その位置座標を取り出し、画像上のテキスト間の距離を引き出すことは可能だろう(tmパッケージ)
  • このreadPDF()を使うには、少し準備が必要でこちらにあるしくみをインストールする必要がある?(入っていた。Texの自動インストール(参考)をしておいたから?)
  • このパッケージがうまく行かなくても、pdfの中の位置情報を取る作業は、こちらにあるように、多くの人が求めているスキルのようなので、解決法はありそうだ
library(tm)
if(file.exists(Sys.which("pdftotext"))) {
    pdf <- readPDF(PdftotextOptions = "-layout")(elem = list(uri = vignette("tm")$pdf),
                                                 language = "en",
                                                 id = "id1")
    pdf[1:13]
}
  • 実行結果("pdf[1:13]"によって、初めのほうだけ表示されている
> if(file.exists(Sys.which("pdftotext"))) {
+     pdf <- readPDF(PdftotextOptions = "-layout")(elem = list(uri = vignette("tm")$pdf),
+                                                  language = "en",
+                                                  id = "id1")
+     pdf[1:13]
+ }
 [1] "                              Introduction to the tm Package"                                                 
 [2] "                                     Text Mining in R"                                                        
 [3] "                                                Ingo Feinerer"                                                
 [4] "                                             February 20, 2011"                                               
 [5] ""                                                                                                             
 [6] ""                                                                                                             
 [7] "Introduction"                                                                                                 
 [8] "This vignette gives a short introduction to text mining in R utilizing the text mining framework provided by" 
 [9] "the tm package. We present methods for data import, corpus handling, preprocessing, meta data management,"    
[10] "and creation of term-document matrices. Our focus is on the main aspects of getting started with text mining" 
[11] "in R--an in-depth description of the text mining infrastructure offered by tm was published in the Journal of"
[12] "Statistical Software (Feinerer et al., 2008). An introductory article on text mining in R was published in R" 
[13] "News (Feinerer, 2008)."                                                                                       
> 
  • オブジェクトの構造は以下の通り(ぎっしりとメタデータが詰まっている)
> str(pdf)
Classes 'PlainTextDocument', 'TextDocument', 'character'  atomic [1:453]                               Introduction to the tm Package                                      Text Mining in R                                                 Ingo Feinerer                                              February 20, 2011 ...
  ..- attr(*, "DateTimeStamp")= POSIXlt[1:1], format: "2011-02-21 01:21:00"
  ..- attr(*, "ID")= chr "id1"
  ..- attr(*, "Language")= chr "en"
  ..- attr(*, "LocalMetaData")= list()
  ..- attr(*, "Origin")= chr "TeX"
  • じゃあ自前のpdfを作って、それを読ませてみよう、ということで、パワーポイントでテキストを配置してPDF保存して読ませてみた

# パワーポイントで作成
my.pdf.file <- file.path("stomach.pdf")
my.pdf <- readPDF(PdftotextOptions = "-layout")(elem = list(uri = my.pdf.file),language = "en",id = "id1")
my.pdf[1:13]
> my.pdf[1:13]
 [1] "stomach"         ""                ""                "          heart" "\f"              NA                NA               
 [8] NA                NA                NA                NA                NA                NA               
  • 位置座標が返ってこない…
    • イラストレータを使って、epsにしてみたり、svgにしてみたりした上で、再度pdfにしてみたりしても、うまく行かない
  • その他の問題としては、Rでグラフオブジェクトをプロットしてそれをpdf保存した場合には、フォント関係のエラーが出るようだ
library(igraph)
g <- graph.tree(10, 2)
g.coords <- layout.kamada.kawai(g)
pdf("test.pdf")
plot(g.coords)
text(g.coords[,1],g.coords[,2]+0.5,letters[1:10])
#plot(g)
dev.off()
my.pdf.file.2 <- file.path("test.pdf")
my.pdf.2 <- readPDF(PdftotextOptions = "-layout")(elem = list(uri = my.pdf.file.2),language = "en",id = "id1")
> my.pdf.2
Error: Couldn't open cidToUnicode file 'D:/Resource/Adobe-Japan1.cidToUnicode'
Error: Unknown character collection 'Adobe-Japan1'
Error: Couldn't find 'EUC-H' CMap file for 'Adobe-Japan1' collection
Error: Unknown CMap 'EUC-H' for character collection 'Adobe-Japan1'
Error: Couldn't open cidToUnicode file 'D:/Resource/Adobe-Japan1.cidToUnicode'
Error: Unknown character collection 'Adobe-Japan1'
Error: Couldn't find 'EUC-H' CMap file for 'Adobe-Japan1' collection
Error: Unknown CMap 'EUC-H' for character collection 'Adobe-Japan1'
Error: Couldn't open cidToUnicode file 'D:/Resource/Adobe-Japan1.cidToUnicode'
Error: Unknown character collection 'Adobe-Japan1'
Error: Couldn't find 'EUC-H' CMap file for 'Adobe-Japan1' collection
Error: Unknown CMap 'EUC-H' for character collection 'Adobe-Japan1'
Error: Couldn't open cidToUnicode file 'D:/Resource/Adobe-Japan1.cidToUnicode'
Error: Unknown character collection 'Adobe-Japan1'
Error: Couldn't find 'EUC-H' CMap file for 'Adobe-Japan1' collection
Error: Unknown CMap 'EUC-H' for character collection 'Adobe-Japan1'
Error: Unknown font tag 'F1001'
Error (697): No font in show
Error: Unknown font tag 'F1001'
Error (705): No font in show
Error: Unknown font tag 'F1001'
Error (712): No font in show
Error: Unknown font tag 'F1001'
Error (721): No font in show
Error: Unknown font tag 'F1001'
Error (728): No font in show
Error: Unknown font tag 'F1001'
Error (739): No font in show
Error: Unknown font tag 'F1001'
Error (797): No font in show
Error: Unknown font tag 'F1001'
Error (804): No font in show
Error: Unknown font tag 'F1001'
Error (813): No font in show
Error: Unknown font tag 'F1001'
Error (821): No font in show
Error: Unknown font tag 'F1001'
Error (875): No font in show
Error: Unknown font tag 'F1001'
Error (890): No font in show
Error: Unknown font tag 'F1001'
Error (908): No font in show
Error: Unknown font tag 'F1001'
Error (920): No font in show
Error: Unknown font tag 'F1001'
Error (932): No font in show
Error: Unknown font tag 'F1001'
Error (941): No font in show
Error: Unknown font tag 'F1001'
Error (951): No font in show
Error: Unknown font tag 'F1001'
Error (961): No font in show
Error: Unknown font tag 'F1001'
Error (973): No font in show
Error: Unknown font tag 'F1001'
Error (984): No font in show
Error: Unknown font tag 'F1001'
Error (996): No font in show
Error: Unknown font tag 'F1001'
Error (1009): No font in show
            q




                q




                    q
                                    q


                        q
q

        q                   q




                                q
    q
^L