我正在努力正确阅读包含 Helvetica 字体的 pdf pdftools
。
我正在尝试从大约 1000 条投票记录中提取信息。总体而言,pdftools
按预期工作。但是,有一两百个 pdf 文件无法正确读取提取的文本。取而代之的是部分文本,例如第一行(= 标题),由一些“任意”字符组成。
据我所知,工作和不工作的唯一区别是 a) 字体(那些不工作的包含 Helvetica)和 b) pdf 的创建方式。似乎那些可以正常工作的 pdf 是在 Excle 中创建的,而那些不能正常工作的 pdf 是使用“Microsoft Reporting Service PDF Rendering Extension 10.0.0.0”创建的。
下面是我的代表,它给出了成功和不成功的导入示例。
我知道 Helvetica 经常会导致问题,因为它通常不会安装在 Windows 机器上。不过,据我所知,我的机器上有 Helvetica(虽然我并不真正理解pdf_font
命令的结果;为什么嵌入了“假”)。
非常感谢!
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