pdftools-Helvetica(?)字体会扭曲文本导入

时间:2019-04-11 07:24:40

标签: r pdf web-scraping pdf-scraping

我正在努力阅读包含pdftools包的Helvetica字体的pdf。

我正在尝试从大约1000个投票记录中提取信息。总体而言,pdftools可以正常工作。但是,有一百或两百个pdf不能正确读取提取的文本。而是部分文字,例如第一行(=标头)由一些“任意”字符组成。

据我所知,有效和无效的唯一区别是 a)字体(不起作用的字体包含Helvetica)和 b)pdf的创建方式。看起来效果不错的pdf是在Excle中创建的,而效果不好的那些pdf是使用“ Microsoft Reporting Service PDF渲染扩展10.0.0.0”创建的。

在我的reprex下面,提供了导入成功和失败的示例。

我知道Helvetica经常会引起问题,因为它通常不会在Windows计算机上安装。据我所知,我的机器上装有Helvetica(尽管我不太了解pdf_font命令的结果;为什么嵌入了“ false”)。

非常感谢!

library(tidyverse, suppressWarnings())
library(pdftools)

link.ok <- "http://parlament.ba/oLaw/GetOwisDocument/?documentId=103320&data=9A4B80C1CB2A8BA6617949C64776F770&lang=bs"
link.notok <- "http://parlament.ba/oLaw/GetOwisDocument/?documentId=125266&data=BE111A5A0468C6C5A5A926FE35A37965&lang=bs"
link.notok2 <- "http://parlament.ba/oLaw/GetOwisDocument/?documentId=132385&data=9AAAAC17DF6FCD761F951F58799E63ED&lang=bs"

从三个文档中获取字体。那些未正确进口的含有Helvetica。

c(link.ok, link.notok, link.notok2) %>% 
  set_names() %>% 
map(., pdftools::pdf_fonts)

#> $`http://parlament.ba/oLaw/GetOwisDocument/?documentId=103320&data=9A4B80C1CB2A8BA6617949C64776F770&lang=bs`
#> # A tibble: 4 x 4
#>   name                type         embedded file 
#>   <chr>               <chr>        <lgl>    <chr>
#> 1 ABCDEE+Calibri,Bold truetype     TRUE     ""   
#> 2 ABCDEE+Calibri      truetype     TRUE     ""   
#> 3 ABCDEE+Calibri      cid_truetype TRUE     ""   
#> 4 ABCDEE+Calibri,Bold cid_truetype TRUE     ""   
#> 
#> $`http://parlament.ba/oLaw/GetOwisDocument/?documentId=125266&data=BE111A5A0468C6C5A5A926FE35A37965&lang=bs`
#> # A tibble: 4 x 4
#>   name            type        embedded file                                
#>   <chr>           <chr>       <lgl>    <chr>                               
#> 1 Helvetica-Bold  type1       FALSE    "C:\\WINDOWS\\Fonts\\Helvetica-Bold~
#> 2 ABCDEE+Arial,B~ cid_truety~ TRUE     ""                                  
#> 3 Helvetica       type1       FALSE    "C:\\WINDOWS\\Fonts\\Helvetica.ttf" 
#> 4 ABCDEE+Arial    cid_truety~ TRUE     ""                                  
#> 
#> $`http://parlament.ba/oLaw/GetOwisDocument/?documentId=132385&data=9AAAAC17DF6FCD761F951F58799E63ED&lang=bs`
#> # A tibble: 4 x 4
#>   name            type        embedded file                                
#>   <chr>           <chr>       <lgl>    <chr>                               
#> 1 Helvetica-Bold  type1       FALSE    "C:\\WINDOWS\\Fonts\\Helvetica-Bold~
#> 2 ABCDEE+Arial,B~ cid_truety~ TRUE     ""                                  
#> 3 Helvetica       type1       FALSE    "C:\\WINDOWS\\Fonts\\Helvetica.ttf" 
#> 4 ABCDEE+Arial    cid_truety~ TRUE     ""

从三个文档中获取文本。请注意前几个字符的区别。

c(link.ok, link.notok, link.notok2) %>% 
  set_names() %>% 
  map(., pdftools::pdf_text)
#> $`http://parlament.ba/oLaw/GetOwisDocument/?documentId=103320&data=9A4B80C1CB2A8BA6617949C64776F770&lang=bs`
#> [1] "                                       Rezultati glasanja\r\nSjednica:            41. sjednica Doma naroda Parlamentarne skupštine Bosne i Hercegovine\r\nDatum održavanja:    2014-09-10 12:18\r\nNacin glasanja:      otvoreno\r\nRedni broj:          Tacka 4\r\nGlasanje o:          Prijedlogu zakona o izmjenama i dopunama Zakona o politici direktnih\r\n                     stranih ulaganja u Bosnu i Hercegovinu (prvo citanje), predlagac: Vijece\r\n                     ministara BiH, zakon broj: 01,02-02-1-30/14, od 17.7.2014.;\r\nTip glasanje:        Prvi krug\r\n Prisutno                                        13\r\n Ukupno                                          13\r\n ZA                                              12\r\n PROTIV                                           0\r\n SUZDRŽAN                                         1\r\n Sulejman Tihic                     Delegat FBiH                      Nije prisutan\r\n Halid Genjac                       Delegat FBiH                      ZA\r\n Nermina Kapetanovic                Delegat FBiH                      ZA\r\n Seudin Hodžic                      Delegat FBiH                      Nije prisutan\r\n Mehmed Bradaric                    Delegat FBiH                      ZA\r\n Dragan Covic                       Delegat FBiH                      ZA\r\n Martin Raguž                       Delegat FBiH                      ZA\r\n Stjepan Krešic                     Delegat FBiH                      ZA\r\n Krunoslav Vrdoljak                 Delegat FBiH                      ZA\r\n Borjana Krišto                     Delegat FBiH                      ZA\r\n Ognjen Tadic                       Delegat RS                        ZA\r\n Dragutin Rodic                     Delegat RS                        ZA\r\n Mladen Ivanic                      Delegat RS                        SUZDRŽAN\r\n Krstan Simic                       Delegat RS                        ZA\r\n Staša Košarac                      Delegat RS                        ZA\r\n                      ZA        PROTIV    SUZDRŽAN      NIJE PRISUTAN         UKUPNO\r\n           FBiH        8           0           0               2                 10\r\n           RS          4           0           1               0                  5\r\n           UKUPNO     12           0           1               2                 15\r\n"
#> 
#> $`http://parlament.ba/oLaw/GetOwisDocument/?documentId=125266&data=BE111A5A0468C6C5A5A926FE35A37965&lang=bs`
#> [1] "      20\021\003VMHGQLFD\0033UHGVWDYQLþNRJ\003GRPD\0033DUODPHQWDUQH\003VNXSãWLQH\003%RVQH\003L\003+HUFHJRYLQH\r\n                                           - 24.11.2015. -\r\nRedni broj glasanja:         12\r\nDatum i vrijeme glasanja:    24.11.2015. 21:13\r\n1DþLQ\003JODVDQMD\035              Javno\r\n5HGQL\003EURM\003WDþNH\035            4\r\n                             3ULMHGORJ\003]DNRQD\003R\003D]LOX\017\003SUHGODJDþ\035\0039LMHüH\003PLQLVWDUD\003%L+\017\003]DNRQ\003EURM\035\003\023\024\017\023\025\020\r\n7DþND\003GQHYQRJ\003UHGD\035\r\n                             \023\025\020\024\020\024\025\022\024\030\017\003RG\003\031\021\033\021\025\023\024\030\021\003 GUXJR\003þLWDQMH\r\n                             Amandman I. poslanika Damira Arnauta\r\nGlasanje o:                  Amandman II. poslanika Damira Arnauta\r\n                             Amandman III. poslanika Damira Arnauta\r\nTip glasanja:                Prvi krug\r\nPrisutan                     37\r\nNije prisutan                5\r\nUkupno                       42\r\nZA                           26\r\nPROTIV                       11\r\nSUZDRŽAN                     0\r\n1.    Borjana Krišto                    Federacija BiH                       Nije prisutan\r\n2.    0ODGHQ\003\003%RVLü\003                    Republika Srpska                     Za\r\n3.    âHILN\003\003'åDIHURYLü                 Federacija BiH                       Za\r\n4.    $VLP\003\0036DUDMOLü\003                   Federacija BiH                       Za\r\n5.    6DIHU\003\003'HPLURYLü\003                 Federacija BiH                       Za\r\n6.    $PLU\003\003)D]OLü                      Federacija BiH                       Za\r\n7.    1HUPLQD\003\003.DSHWDQRYLü\003             Federacija BiH                       Za\r\n8.    âHPVXGLQ\003\0030HKPHGRYLü\003             Federacija BiH                       Za\r\n9.    +D]LP\0035DQþLü                      Federacija BiH                       Za\r\n10.   6DONR\003\0036RNRORYLü\003                 Federacija BiH                       Za\r\n11.   6HQDG\003\003âHSLü\003                     Federacija BiH                       Za\r\n12.   6DGLN\003\003$KPHWRYLü\003                 Republika Srpska                     Za\r\n13.   äHOMNR\003.RPãLü                     Federacija BiH                       Nije prisutan\r\n14.   'DPLU\003\003%HüLURYLü\003                 Federacija BiH                       Za\r\n15.   0HQVXUD\003%HJDQRYLü\003                Federacija BiH                       Za\r\n16.   Jovan Vukovljak                   Republika Srpska                     Protiv\r\n17.   0LURVODY\003\0030LORYDQRYLü\003            Republika Srpska                     Protiv\r\n18.   /D]DU\003\0033URGDQRYLü\003                Republika Srpska                     Protiv\r\n19.   0LOLFD\003\0030DUNRYLü\003                 Republika Srpska                     Nije prisutan\r\n20.   'XãDQND\003\0030DMNLü\003                  Republika Srpska                     Protiv\r\n21.   Staša Košarac                     Republika Srpska                     Protiv\r\n"
#> [2] "22.  1LNROD\003âSLULü            Republika Srpska            Protiv\r\n23.  Maja Gasal-Vražalica     Federacija BiH              Za\r\n24.  +DQND\003\0039DM]RYLü\003         Federacija BiH              Za\r\n25.  Predrag Kožul            Federacija BiH              Za\r\n26.  0RQLND\003\0037RPLü\003           Federacija BiH              Za\r\n27.  1LNROD\003\003/RYULQRYLü\003      Federacija BiH              Za\r\n28.  Diana Zelenika           Federacija BiH              Za\r\n29.  1HQDG\003\003/DOLü\003            Republika Srpska            Protiv\r\n30.  CRUÿR\003\003.UþPDU\003           Republika Srpska            Protiv\r\n31.  %RULVODY\003\003%RMLü\003         Republika Srpska            Nije prisutan\r\n32.  $OHNVDQGUD\003\0033DQGXUHYLü\003  Republika Srpska            Protiv\r\n33.  0LUVDG\003\003CRQODJLü\003        Federacija BiH              Za\r\n34.  Damir Arnaut             Federacija BiH              Za\r\n35.  0LUVDG\003\003,VDNRYLü\003        Federacija BiH              Za\r\n36.  )HKLP\003\003âNDOMLü\003          Federacija BiH              Nije prisutan\r\n37.  0LUVDG\003\0030HãLü\003           Federacija BiH              Za\r\n38.  'HQLV\003\003%HüLURYLü\003        Federacija BiH              Protiv\r\n39.  6DãD\003\0030DJD]LQRYLü\003       Federacija BiH              Za\r\n40.  =DLP\003\003%DFNRYLü\003          Federacija BiH              Za\r\n41.  -DVPLQ\003\003(PULü\003           Federacija BiH              Za\r\n42.  0RPþLOR\003\0031RYDNRYLü\003      Republika Srpska            Protiv\r\n                         ZA  PROTIV        SUZDRŽAN NIJE PRISUTAN       UKUPNO\r\nFBIH                     24     1              0           3              28\r\nRS                        2    10              0           2              14\r\nUKUPNO                   26    11              0           5              42\r\n"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
#> 
#> $`http://parlament.ba/oLaw/GetOwisDocument/?documentId=132385&data=9AAAAC17DF6FCD761F951F58799E63ED&lang=bs`
#> [1] "      25\021\003VMHGQLFD\0033UHGVWDYQLþNRJ\003GRPD\0033DUODPHQWDUQH\003VNXSãWLQH\003%RVQH\003L\003+HUFHJRYLQH\r\n                                           - 16.02.2016. -\r\nRedni broj glasanja:         6\r\nDatum i vrijeme glasanja:    16.02.2016. 16:21\r\n1DþLQ\003JODVDQMD\035              Javno\r\n5HGQL\003EURM\003WDþNH\035            4\r\n                             Prijedlog zakona o izmjenama i dopunama Zakona o službi u Oružanim\r\n7DþND\003GQHYQRJ\003UHGD\035          VQDJDPD\003%RVQH\003L\003+HUFHJRYLQH\017\003SUHGODJDþ\035\0039LMHüH\003PLQLVWDUD\003%L+\017\003]DNRQ\003EURM\035\003\r\n                             \023\024\017\023\025\020\023\025\020\024\020\025\031\022\024\030\017\003RG\003\024\032\021\024\025\021\025\023\024\030\021\003 SUYR\003þLWDQMH\r\nTip glasanja:                Prvi krug\r\nPrisutan                     35\r\nNije prisutan                7\r\nUkupno                       42\r\nZA                           30\r\nPROTIV                       0\r\nSUZDRŽAN                     5\r\n1.    âHILN\003\003'åDIHURYLü                 Federacija BiH                      Za\r\n2.    Borjana Krišto                    Federacija BiH                      Za\r\n3.    0ODGHQ\003\003%RVLü\003                    Republika Srpska                    Za\r\n4.    $PLU\003\003)D]OLü                      Federacija BiH                      Za\r\n5.    6DIHU\003\003'HPLURYLü\003                 Federacija BiH                      Za\r\n6.    1HUPLQD\003\003.DSHWDQRYLü\003             Federacija BiH                      Nije prisutan\r\n7.    âHPVXGLQ\003\0030HKPHGRYLü\003             Federacija BiH                      Nije prisutan\r\n8.    +D]LP\0035DQþLü                      Federacija BiH                      Nije prisutan\r\n9.    $VLP\003\0036DUDMOLü\003                   Federacija BiH                      Za\r\n10.   6DONR\003\0036RNRORYLü\003                 Federacija BiH                      Za\r\n11.   6HQDG\003\003âHSLü\003                     Federacija BiH                      Za\r\n12.   6DGLN\003\003$KPHWRYLü\003                 Republika Srpska                    Za\r\n13.   äHOMNR\003.RPãLü                     Federacija BiH                      Nije prisutan\r\n14.   'DPLU\003\003%HüLURYLü\003                 Federacija BiH                      Suzdržan\r\n15.   0HQVXUD\003%HJDQRYLü\003                Federacija BiH                      Suzdržan\r\n16.   Jovan Vukovljak                   Republika Srpska                    Za\r\n17.   0LURVODY\003\0030LORYDQRYLü\003            Republika Srpska                    Za\r\n18.   /D]DU\003\0033URGDQRYLü\003                Republika Srpska                    Za\r\n19.   0LOLFD\003\0030DUNRYLü\003                 Republika Srpska                    Za\r\n20.   'XãDQND\003\0030DMNLü\003                  Republika Srpska                    Za\r\n21.   Staša Košarac                     Republika Srpska                    Za\r\n22.   1LNROD\003âSLULü                     Republika Srpska                    Nije prisutan\r\n23.   Maja Gasal-Vražalica              Federacija BiH                      Suzdržan\r\n24.   +DQND\003\0039DM]RYLü\003                  Federacija BiH                      Suzdržan\r\n"
#> [2] "25.  Predrag Kožul            Federacija BiH              Za\r\n26.  0RQLND\003\0037RPLü\003           Federacija BiH              Za\r\n27.  1LNROD\003\003/RYULQRYLü\003      Federacija BiH              Za\r\n28.  Diana Zelenika           Federacija BiH              Nije prisutan\r\n29.  1HQDG\003\003/DOLü\003            Republika Srpska            Za\r\n30.  CRUÿR\003\003.UþPDU\003           Republika Srpska            Nije prisutan\r\n31.  %RULVODY\003\003%RMLü\003         Republika Srpska            Za\r\n32.  $OHNVDQGUD\003\0033DQGXUHYLü\003  Republika Srpska            Za\r\n33.  0LUVDG\003\003CRQODJLü\003        Federacija BiH              Za\r\n34.  Damir Arnaut             Federacija BiH              Za\r\n35.  0LUVDG\003\003,VDNRYLü\003        Federacija BiH              Za\r\n36.  )HKLP\003\003âNDOMLü\003          Federacija BiH              Za\r\n37.  0LUVDG\003\0030HãLü\003           Federacija BiH              Za\r\n38.  'HQLV\003\003%HüLURYLü\003        Federacija BiH              Suzdržan\r\n39.  6DãD\003\0030DJD]LQRYLü\003       Federacija BiH              Za\r\n40.  =DLP\003\003%DFNRYLü\003          Federacija BiH              Za\r\n41.  -DVPLQ\003\003(PULü\003           Federacija BiH              Za\r\n42.  0RPþLOR\003\0031RYDNRYLü\003      Republika Srpska            Za\r\n                         ZA  PROTIV        SUZDRŽAN NIJE PRISUTAN       UKUPNO\r\nFBIH                     18    0               5           5              28\r\nRS                       12    0               0           2              14\r\nUKUPNO                   30    0               5           7              42\r\n"

会话信息:

    sessionInfo()
    #> R version 3.4.3 (2017-11-30)
    #> Platform: x86_64-w64-mingw32/x64 (64-bit)
    #> Running under: Windows 10 x64 (build 17763)
    #> 
    #> Matrix products: default
    #> 
    #> locale:
    #> [1] LC_COLLATE=English_Austria.1252  LC_CTYPE=English_Austria.1252   
    #> [3] LC_MONETARY=English_Austria.1252 LC_NUMERIC=C                    
    #> [5] LC_TIME=English_Austria.1252    
    #> 
    #> attached base packages:
    #> [1] stats     graphics  grDevices utils     datasets  methods   base     
    #> 
    #> other attached packages:
    #>  [1] pdftools_2.2    forcats_0.4.0   stringr_1.4.0   dplyr_0.8.0.1  
    #>  [5] purrr_0.3.2     readr_1.3.1     tidyr_0.8.3     tibble_2.1.1   
    #>  [9] ggplot2_3.1.1   tidyverse_1.2.1
    #> 
    #> loaded via a namespace (and not attached):
    #>  [1] Rcpp_1.0.1       cellranger_1.1.0 pillar_1.3.1     compiler_3.4.3  
    #>  [5] highr_0.8        plyr_1.8.4       tools_3.4.3      digest_0.6.18   
    #>  [9] lubridate_1.7.4  jsonlite_1.6     evaluate_0.13    nlme_3.1-131    
    #> [13] gtable_0.3.0     lattice_0.20-35  pkgconfig_2.0.2  rlang_0.3.4     
    #> [17] cli_1.1.0        yaml_2.2.0       haven_2.1.0      xfun_0.6        
    #> [21] withr_2.1.2      xml2_1.2.0       httr_1.4.0       knitr_1.22      
    #> [25] askpass_1.1      hms_0.4.2        generics_0.0.2   grid_3.4.3      
    #> [29] tidyselect_0.2.5 glue_1.3.1       qpdf_1.1         R6_2.4.0        
    #> [33] fansi_0.4.0      readxl_1.3.1     rmarkdown_1.12   modelr_0.1.4    
    #> [37] magrittr_1.5     backports_1.1.4  scales_1.0.0     htmltools_0.3.6 
    #> [41] rvest_0.3.2      assertthat_0.2.1 colorspace_1.4-1 utf8_1.1.4      
    #> [45] stringi_1.4.3    lazyeval_0.2.2   munsell_0.5.0    broom_0.5.2     
    #> [49] crayon_1.3.4

0 个答案:

没有答案