pdftools - шрифт Helvetica (?) искажает импорт текста - PullRequest
0 голосов
/ 11 апреля 2019

Я изо всех сил пытаюсь правильно прочитать PDF-файлы, содержащие шрифт Helvetica с пакетом pdftools.

Я пытаюсь извлечь информацию из примерно 1000 записей голосования.В целом, pdftools работает как задумано.Тем не менее, есть одна или две сотни PDF, где извлеченный текст не читается должным образом.Вместо этого части текста, например первые строки (= заголовок), состоят из некоторых «произвольных» символов.

Насколько я могу судить, единственная разница между теми, которые работают, и теми, которые не работают, является) шрифт (те, которые не работают, содержат Helvetica) и б) способ создания PDF.Кажется, что те PDF, которые работают отлично, были созданы в Excle, в то время как те, которые не работают, были созданы с расширением рендеринга PDF службы отчетов Microsoft 10.0.0.0.

Ниже моего представления, в котором приведены примерыуспешный и неудачный импорт.

Я понимаю, что 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
...