Resumen
Partido | Fuente | Resultado1 | Páginas2 | Capítulos | Párrafos |
---|---|---|---|---|---|
Actua | HTML + EPUB + MD | 23 | 11 | 365 | |
Ciudadanos | HTML | HTML + EPUB + MD | 21 | 14 | 268 |
PACMA | HTML | HTML + EPUB + MD | 45 | 3 | 853 |
Podemos | HTML + EPUB + MD | 33 | 9 | 292 | |
PP | HTML + EPUB + MD | 42 | 11 | 693 | |
PSOE | HTML + EPUB + MD | 91 | 9 | 1390 | |
Vox | HTML + EPUB + MD | 6 | 10 | 100 |
Notas:
- 1 Se puede descargar de we.tl/t-CwCneKiaFF y la contraseña de los
zip
esprogramaelectoral
. - 2 Valor calculado del resultado de imprimir el
html
generado en formatoDin A4
, con fuenteArial 12pt
y margen de1cm
.
¿Por qué no usar PDF?
Hay muchos motivos para no usar pdf
pero lo resumiría en que el pdf
esta pensado para que el usuario vea el pdf
como quiere el autor, no
como quiere y necesita el usuario.
Si necesitas cambiar los margenes, el tipo de letra, o quitar las imágenes decorativas será un infierno.
Quizá el programa hable de ecología, diversidad funcional, transparencia, open data, licencias libres y flexibilidad, pero su propio formato no te deja remaquetarlo para ahorrar papel cuando lo imprimas, tampoco te deja cambiarle el tipo de letra para ayudarte con la compresión lectora si sufres algún tipo de dislexia, en muchos casos usar un lector de texto para ciegos será imposible, y mucho menos es libre, abierto, transparente o flexible.
¿Cómo se ha hecho la conversión?
Muy a grandes rasgos se han usado las herramientas de poppler-utils
para
generar de cada pdf
un xml
y un txt
, los cuales lee un script python
para conseguir recolocar y ensamblar el texto a la vez que detecta que es
un título, que es un párrafo y que es una lista, para finalmente generar un
fichero Markdown
el cual se convierte a epub
y html
con pandoc
.
En los casos que se podía usar como fuente un html
en vez de un pdf
solo ha hecho falta arreglar los problemas de maquetación para generar
un Markdown
que ya sirviera para el resto del proceso.
Dificultad de conversión
La dificultad principal al convertir un pdf
a texto plano, en concreto a un
lenguaje de marcado, es detectar el texto relevante (por ejemplo, no quieres copiar
los números de página), ensamblarlo correctamente
(pues en un pdf
el texto no es "fluido"), incluso recolocarlo en no pocas ocasiones,
y a menudo corregir erratas que se producen en la transformación... pero veamos
en más detalle cada caso:
Fácil
El programa más fácil de convertir ha sido sin duda PACMA. La razón es obvia,
existe una versión html
bastante bien maquetada
(aunque el validador encuentra errores graves que le impiden completar el analisis HTML
para nuestro proposito solo habia dos errores que realmente nos afectaban y eran de fácil solución)
y estaba cerca de cumplir las normas de Accesibilidad Web AA
(solo 8 problemas).
Regular
El segundo programa más fácil en convertir fue el otro también disponible en HTML
, el de Ciudadanos.
La diferencia con el predecesor es que estaba muy mal maquetado (104 errores HTML
)
y no cumple Accesibilidad Web AA ni de lejos (68 problemas).
Aún así esto siempre será mejor que un pdf
.
El caso de Ciudadanos llama la atención porque su programa de 2015 fue el pdf
más dificil que he visto: El texto no era texto, si no imágenes de texto
(hubo que usar OCR
para intentar sacar algo), la indentación y los símbolos
que marcaban la jerarquía de los capítulos y listas era totalmente ambigua,
había partes repetidas en distintos capítulos, etc...
El porqué de este cambio lo atribuyo a la absorción de parte de UPyD por Ciudadanos,
ya que UPyD era uno de los pocos partidos que publicaba sistemáticamente su
programa en HTML
y lo hacia de la misma manera (con múltiples problemas de maquetación
y accesibilidad).
Difícil
Los programas de Vox y Podemos se encuentran en un nivel similar, y esperable, de dificultad.
Es decir, el propio de un pdf
que al menos es lo suficientemente homogenio y simple
(básicamente son una lista de puntos con un solo nivel de indentación) como para
que no sea un infierno reensamblar el texto.
Innecesariamente difíciles
Los tres que nos quedan son innecesariamente difíciles por distintas razones:
El de Actua esta mal generado (por los metadatos se ve que se ha hecho imprimiendo un docx
a pdf
)
de manera que al extraer el texto muchas palabras se dividen en varios
trozos (por ejemplo, Polí tica So ci a l
) y la posición y las coordenadas de los
bloques de texto están de tal manera que dificultaban la programación.
El del PP está lleno de fotos del líder posando que estorban, empieza con páginas a una sola columna, luego a dos columnas en un determinado formato, luego sigue a dos columnas pero en otro formato y los márgenes no son estables, obligándote a readaptar el script en cada movimiento y a renunciar a detectar algunos contenidos (como los títulos, o algunas páginas en concreto) de manera elegante y terminar hardcodeándolo.
El del PSOE aunque también es a dos columnas mantienen su formato
durante todo el documento, sin embargo, lo que es un caos es la indentación.
En ocasiones el uso de -
, *
, números y letras para listas se va alternando
sin quedar claro cuál es su jerarquía. A veces hay el típico aumento del
margen derecho que denota dicha jerarquía y otras veces no, a veces
parece que la lógica es "primero número, luego -
y luego *
" y otras veces
"primero número, luego *
y luego -
" u otra combinación posible.
De manera que al final renuncié a representar de manera semántica mediante un
buen lenguaje de marcado cualquier
tipo de jerarquía en las listas y simplemente muestro todo como un párrafo
detrás de otro.
Resultado
Solo el de PACMA queda realmente bien ya que el de Ciudadanos pierde o recupera
estilos según se mire (no lo explico por no enrollarme, pero quien vea el código
y sepa de html
lo entenderá) y los que estaban en pdf
cada uno tiene sus problemas
no pudiéndose reproducir en ningún caso todos los estilos o formatos.
Sin embargo los textos están completos, que es lo que importa. Así que puedes
usar las versiones epub
, html
y markdown
sin problemas y más cómodamente
que cualquiera de los originales.
Páginas y tamaño
Partido | Páginas | Tamaño (KB) | ||||
---|---|---|---|---|---|---|
Original1 | HTML | Ahorro | Original2 | EPUB | Ahorro | |
Actua | 41 | 23 | 43 % | 1501 | 57 | 96 % |
Ciudadanos | 26 | 21 | 19 % | 1125 | 58 | 94 % |
PACMA | 92 | 45 | 51 % | 877 | 80 | 90 % |
Podemos | 105 | 33 | 68 % | 839 | 82 | 90 % |
PP | 102 | 42 | 58 % | 5709 | 81 | 98 % |
PSOE | 152 | 91 | 40 % | 615 | 161 | 73 % |
Vox | 25 | 6 | 76 % | 183 | 23 | 87 % |
Notas:
- 1 Para Ciudadanos el valor es lo que resultaría de imprimir su página web.
Para el resto es el número de páginas de sus
pdf
(esto incluye a PACMA porque también tenían una versiónpdf
). - 2 Para Ciudadanos el valor es lo que resultaría de descargar su página web, incluido
css
,javascript
e imágenes. Para el resto es el tamaño de supdf
.
¿En qué se van tantas páginas?
Lo más común es que se rellenen páginas con grandes margenes y un tamaño de letra
amplio (si, justo como en el cole), lo cual, aunque no me gusta,
es hasta cierto punto normal porque mucha
gente encuentra la lectura más cómoda así. Este es el caso de la mayoría, con
la excepción del PP, que usando un tipo de letra relativamente pequeño
en comparación con los otros derrocha espacio con múltiples fotos del líder
posando y otras con pinta de powerpoint
de una presentación corporativa.
¿En qué se van tantos KB?
Aquí se ve muy bien lo dicho anteriormente sobre el PP, mientras que en los demás la reducción de peso es la normal, en el PP se dispara al prescindir de los elementos decorativos o de exhibición del líder.
Palabras más usadas
Tras eliminar algunas preposiciones, conjunciones, artículos, pronombres, adverbios
y otras palabras poco relevantes pero muy usadas en nuestro idioma, se buscan
las raíces de palabras más usadas (representadas con la raíz más un *
) y se
escogen las 10 más usadas. Si da la casualidad de que alguna de esas raíces
solo corresponde a una palabra, indico directamente la palabra en vez de la raíz
(y por lo tanto no llevará *
).
Bajo los gráficos se encuentra el desglose de palabras pertenecientes a una raíz.
¡OJO! Que los porcentajes son en ‰ (tanto por mil), no en % (tanto por ciento).
Actua
14.13
‰ public*:5.56
‰ públicos2.91
‰ pública2.78
‰ públicas1.77
‰ público0.13
‰ publicación
9.24
‰ social*:5.69
‰ social2.65
‰ sociales0.25
‰ socialmente
8.29
‰ polit*:3.54
‰ política3.29
‰ políticas0.51
‰ político0.38
‰ políticos
8.15
‰ derech*:4.68
‰ derechos1.77
‰ derecho1.01
‰ derecha0.13
‰ derechas
6.52
‰ model*:5.43
‰ modelo0.63
‰ modelos
6.25
‰ econom*:1.90
‰ económica1.39
‰ económico1.01
‰ economía0.76
‰ económicas0.51
‰ económicos0.13
‰ económicamente0.13
‰ economista
5.43
‰ autonom*:1.77
‰ autónomas1.26
‰ autonomía0.38
‰ autónomos0.38
‰ autonómico0.38
‰ autonómicas0.38
‰ autonómica0.25
‰ autonómicos0.25
‰ autonomías
5.30
‰ servici*:3.92
‰ servicios1.01
‰ servicio
5.30
‰ sistem*:4.17
‰ sistema0.63
‰ sistemas0.13
‰ sistémica
5.03
‰ españ*:3.79
‰ españa0.38
‰ española0.25
‰ españolas0.13
‰ españoles0.13
‰ español
Ciudadanos
17.63
‰ españ*:9.88
‰ españa2.61
‰ españoles1.92
‰ español1.65
‰ española0.41
‰ españolas
12.49
‰ public*:3.43
‰ públicos3.02
‰ públicas2.47
‰ público2.06
‰ pública0.14
‰ publicarse0.14
‰ publicaremos0.14
‰ publicar0.14
‰ publicando0.14
‰ publicación
10.72
‰ garantiz*:4.53
‰ garantizar4.12
‰ garantizaremos0.82
‰ garantizando0.27
‰ garantizará0.14
‰ garantizarles0.14
‰ garantizado
8.08
‰ nacional*:6.45
‰ nacional0.41
‰ nacionales0.27
‰ nacionalistas0.27
‰ nacionalista0.14
‰ nacionalidad
7.05
‰ derech*:3.71
‰ derecho2.88
‰ derechos
6.90
‰ impuls*:5.35
‰ impulsaremos0.55
‰ impulsando0.27
‰ impulsar0.14
‰ impulsará0.14
‰ impulsada
6.32
‰ mejor*:1.65
‰ mejorar1.51
‰ mejores1.51
‰ mejoraremos0.96
‰ mejora0.14
‰ mejore0.14
‰ mejorando
6.17
‰ nuev*:1.92
‰ nuevo1.51
‰ nuevos1.51
‰ nueva0.82
‰ nuevas
5.88
‰ trabaj*:2.47
‰ trabajo1.51
‰ trabajadores0.41
‰ trabajador0.27
‰ trabajar0.14
‰ trabajos0.14
‰ trabajen0.14
‰ trabajaremos0.14
‰ trabajando0.14
‰ trabajadoras0.14
‰ trabajadora
5.88
‰ acab*:3.02
‰ acabar2.47
‰ acabaremos
PACMA
25.45
‰ animal*:17.22
‰ animales3.87
‰ animal2.34
‰ animalista0.07
‰ animalistas
8.89
‰ public*:2.00
‰ pública1.87
‰ público1.80
‰ públicas1.74
‰ públicos0.27
‰ publicado0.13
‰ publicar0.13
‰ publicando0.13
‰ publicación0.07
‰ públicamente0.07
‰ publicarán
8.46
‰ person*:7.28
‰ personas0.47
‰ persona0.07
‰ personan
6.22
‰ educ*:3.27
‰ educación1.07
‰ educativo0.80
‰ educativos0.27
‰ educativas0.13
‰ educativa0.13
‰ educar0.07
‰ educadores
6.14
‰ desarroll*:3.87
‰ desarrollo0.87
‰ desarrollar0.47
‰ desarrollen0.13
‰ desarrollando0.13
‰ desarrollan0.07
‰ desarrollos0.07
‰ desarrollados0.07
‰ desarrolla
6.07
‰ social*:3.74
‰ social1.87
‰ sociales
5.64
‰ propon*:4.54
‰ proponemos0.60
‰ propone0.07
‰ proponer
5.20
‰ salud*:4.41
‰ salud0.27
‰ saludables0.13
‰ saludable
5.06
‰ polit*:2.34
‰ políticas1.74
‰ política0.53
‰ políticos0.07
‰ político
4.70
‰ protección
Podemos
11.00
‰ public*:3.04
‰ público2.97
‰ pública2.05
‰ públicas1.70
‰ públicos0.07
‰ publicaremos0.07
‰ publicar0.07
‰ publicado0.07
‰ publicación
9.60
‰ derech*:5.65
‰ derechos2.90
‰ derecho0.14
‰ derecha0.07
‰ derechas
8.60
‰ trabaj*:2.19
‰ trabajo1.62
‰ trabajadores1.41
‰ trabajadoras0.57
‰ trabajar0.49
‰ trabajan0.42
‰ trabajadora0.28
‰ trabajará0.28
‰ trabajador0.21
‰ trabajaremos0.14
‰ trabajos0.07
‰ trabajamos0.07
‰ trabajado0.07
‰ trabaja
8.29
‰ person*:6.64
‰ personas0.92
‰ persona
6.89
‰ españ*:4.10
‰ españa0.92
‰ española0.71
‰ españolas0.42
‰ españoles0.14
‰ español
6.58
‰ servici*:4.59
‰ servicios1.41
‰ servicio
5.96
‰ establec*:1.70
‰ estableceremos1.34
‰ establecer0.71
‰ establecerá0.49
‰ establecerán0.28
‰ establecimientos0.28
‰ establecimiento0.21
‰ establecido0.14
‰ estableciendo0.14
‰ establecida0.14
‰ establece
5.89
‰ pais*:4.45
‰ país0.92
‰ países
5.34
‰ sistem*:4.24
‰ sistema0.64
‰ sistemas
5.19
‰ social*:2.68
‰ social1.91
‰ sociales0.07
‰ socialmente0.07
‰ socialista
PP
12.06
‰ españ*:6.21
‰ españa2.27
‰ españoles1.46
‰ española0.88
‰ español0.58
‰ españolas
11.60
‰ impuls*:6.94
‰ impulsaremos1.24
‰ impulsar1.24
‰ impulsando0.88
‰ impulso0.22
‰ impulsarán0.15
‰ impulsen0.07
‰ impulse0.07
‰ impulsará0.07
‰ impulsan0.07
‰ impulsado
8.43
‰ desarroll*:4.68
‰ desarrollo2.12
‰ desarrollaremos0.22
‰ desarrollar0.22
‰ desarrollando0.15
‰ desarrollen0.15
‰ desarrolladas0.07
‰ desarrollos0.07
‰ desarrolle0.07
‰ desarrollará0.07
‰ desarrollarse0.07
‰ desarrollan0.07
‰ desarrolladores
8.27
‰ public*:2.70
‰ públicos1.68
‰ público1.61
‰ públicas1.53
‰ pública0.07
‰ públicamente0.07
‰ publicando0.07
‰ publicados0.07
‰ publicación
7.81
‰ promov*:5.55
‰ promoveremos1.02
‰ promover0.44
‰ promoviendo0.22
‰ promoverán0.15
‰ promoverá
7.58
‰ plan*:4.38
‰ plan2.78
‰ planes
7.42
‰ nacional*:5.63
‰ nacional1.10
‰ nacionales0.15
‰ nacionalidad0.07
‰ nacionalismos0.07
‰ nacionalismo
6.49
‰ nuev*:2.56
‰ nuevas1.83
‰ nuevos0.95
‰ nueva0.80
‰ nuevo
6.18
‰ segur*:5.19
‰ seguridad0.22
‰ seguras0.15
‰ seguros0.15
‰ seguro0.15
‰ segura
6.11
‰ autonom*:2.63
‰ autónomas0.66
‰ autonómicos0.58
‰ autonómico0.51
‰ autónomos0.44
‰ autonómicas0.37
‰ autonomía0.22
‰ autónomo0.22
‰ autonómica0.07
‰ autónoma0.07
‰ autonomías
PSOE
13.97
‰ social*:5.80
‰ social3.30
‰ sociales2.31
‰ socialista1.60
‰ socialistas0.06
‰ socialmente
10.58
‰ españ*:6.12
‰ españa1.35
‰ española1.03
‰ españoles0.71
‰ español0.67
‰ españolas0.03
‰ españas
7.67
‰ derech*:4.55
‰ derechos2.31
‰ derecho0.22
‰ derecha0.10
‰ derechas
7.50
‰ public*:1.89
‰ pública1.76
‰ público1.70
‰ públicos1.54
‰ públicas0.06
‰ publicación0.03
‰ públicamente0.03
‰ publicando
7.36
‰ polit*:3.14
‰ políticas3.04
‰ política0.38
‰ políticos0.32
‰ político
6.99
‰ impuls*:2.21
‰ impulsar1.73
‰ impulsaremos1.03
‰ impulso0.54
‰ impulsando0.42
‰ impulsado0.16
‰ impulse0.16
‰ impulsará0.13
‰ impulsarán0.06
‰ impulsadas0.03
‰ impulsó0.03
‰ impulsan0.03
‰ impulsa
6.81
‰ desarroll*:3.62
‰ desarrollo1.38
‰ desarrollar0.38
‰ desarrollando0.35
‰ desarrollaremos0.13
‰ desarrollen0.10
‰ desarrolle0.10
‰ desarrollan0.06
‰ desarrollos0.06
‰ desarrollada0.03
‰ desarrolló0.03
‰ desarrollaran0.03
‰ desarrollados0.03
‰ desarrollado0.03
‰ desarrolladas0.03
‰ desarrolla
6.75
‰ person*:5.93
‰ personas0.38
‰ persona
6.44
‰ gobiern*:5.96
‰ gobierno0.03
‰ gobierne0.03
‰ gobierna
6.20
‰ sistem*:5.03
‰ sistema0.71
‰ sistemas0.03
‰ sistémico0.03
‰ sistémicas
Vox
24.96
‰ españ*:8.85
‰ españa4.43
‰ españoles3.87
‰ española3.87
‰ español2.21
‰ españolas
13.67
‰ nacional*:8.85
‰ nacional2.77
‰ nacionalidad0.55
‰ nacionalidades0.55
‰ nacionales
11.29
‰ public*:3.87
‰ públicos2.77
‰ público2.21
‰ pública1.11
‰ públicas0.55
‰ publicación
8.91
‰ famili*:3.87
‰ familias2.21
‰ familiar2.21
‰ familia
7.13
‰ inmigr*:2.77
‰ inmigrantes2.77
‰ inmigración1.11
‰ inmigrante
7.13
‰ empres*:3.87
‰ empresa2.77
‰ empresas
6.54
‰ estado5.94
‰ autonom*:2.77
‰ autonómicas0.55
‰ autónomos0.55
‰ autónoma0.55
‰ autonómico0.55
‰ autonómica0.55
‰ autonomía
5.35
‰ ilegal*:2.77
‰ ilegales1.66
‰ ilegal0.55
‰ ilegalmente
5.35
‰ reducción
Conclusiones
No creo que realmente se pueda extraer conclusiones serias de estos gráficos que no supiéramos todos ya.
El código fuente del script usado esta disponible en github.com/s-nt-s