Saltar al contingut
Kokai
Idioma
Seccions d’aquesta pàgina
Obrir l’app

Guia

Quines confirmacions de reserva en PDF llegeix Kokai i com

Kokai llegeix al mateix dispositiu, amb pdf.js i sense IA ni servidor, el text de les 6 primeres pàgines d’un PDF de reserva de fins a 20 MB. Reconeix 65 marques i 8 classes de reserva (allotjament, vol, tren, autobús, vaixell, activitat, cotxe i assegurança), i busca el localitzador, les dates i hores, el titular, el preu i la cancel·lació gratuïta per les seves etiquetes en set idiomes. Només omple el que és buit i, si és un allotjament, afegeix les nits al viatge; no llegeix fotos ni PDF escanejats.

Revisat el 18 min de lectura

En poques paraules

On es llegeix
Al teu dispositiu, amb pdf.js de Mozilla. Sense IA i sense enviar el fitxer a cap servidor.
Quina part del PDF
El text de les 6 primeres pàgines, en fitxers de fins a 20 MB.
Classes de reserva
8: allotjament, vol, tren, autobús, vaixell, activitat, cotxe de lloguer i assegurança de viatge.
Marques reconegudes
65, de Booking.com i Airbnb a Ryanair, Renfe, FlixBus, GetYourGuide o Europcar.
Idiomes de les etiquetes
Castellà, anglès, francès, italià, portuguès, català i alemany.
Monedes
37 codis ISO 4217 i 8 símbols (€, £, $, US$, ¥, R$, C$, A$).
El que no llegeix
Fotos i PDF escanejats (no tenen text) i PDF protegits amb contrasenya.
Única sortida a la xarxa
L’adreça d’un allotjament que no és al teu mapa, cap a Nominatim d’OpenStreetMap, per situar-lo.

Com funciona: text, no imatge

Una confirmació de reserva en PDF gairebé sempre porta text de veritat a dins: el que pots seleccionar i copiar. Kokai el treu amb pdf.js, la biblioteca de Mozilla (llicència Apache-2.0) que fa servir Firefox per mostrar els PDF, i només la carrega quan afegeixes un PDF. Tot passa al dispositiu:

  1. Si el fitxer passa de 20 MB, es desa sense llegir.
  2. pdf.js treu el text de les 6 primeres pàgines: les confirmacions diuen el que és important al començament, i vint pàgines de condicions no hi afegeixen res.
  3. Kokai reconstrueix les línies: pdf.js dona trossos de text amb la seva posició, i una línia s’acaba quan el tros següent baixa més de mitja alçada de lletra.
  4. El text es passa a minúscules i sense accents per buscar etiquetes («Número de confirmación» i «numero de confirmacion» són el mateix), però el que es troba es retalla de l’original, i així el localitzador surt amb les seves majúscules.
  5. Es decideix què és i de qui és, i es busquen les dades per les seves etiquetes. No hi ha plantilles per proveïdor, que canvien cada pocs mesos.
  6. Si no es reconeix la classe i surten menys de dues dades, es dona per no llegit: «No he encontrado los datos de una reserva en el PDF. Rellénalos a mano.» («No he trobat les dades d’una reserva al PDF. Omple-les a mà.»)

No hi ha reconeixement de lletres en imatges (OCR). Una foto del bitllet, una captura de pantalla o un PDF escanejat es desen i s’obren sense connexió, però no es llegeixen. Un PDF protegit amb contrasenya, tampoc.

On es llegeix un PDF a l’app

OnQuè passa
Documents del viatge → «Añadir documento» («Afegir document»)En triar el fitxer es llegeix el primer PDF. El tipus i el títol es proposen sols, llevat que ja els hagis tocat. En prémer «Guardar» («Desar») s’apliquen el localitzador, les dates, el titular i les etiquetes.
Fitxa d’un document → «Añadir» («Afegir»)Es llegeix el PDF afegit i s’omple el que sigui buit. La fitxa diu què ha omplert i demana «Revisa que esté bien.» («Revisa que estigui bé.»)
Allotjament → «Desde el PDF de la reserva» («Des del PDF de la reserva»)Crea el document, el llegeix i, si és un allotjament amb dates, n’afegeix les nits. Si és una altra cosa, el deixa a Documents amb el seu tipus.
CarteraNo es llegeix: la cartera desa passaport, DNI o assegurança anual, no reserves.

A Documents, mentre llegeix, l’app diu «Leyendo el PDF en este dispositivo…» («Llegint el PDF en aquest dispositiu…»); a Allotjament, «Leyendo el PDF…». El que ha entès surt en una línia que comença per «Leído en este dispositivo:» («Llegit en aquest dispositiu:»). Més sobre els documents a Documents de viatge sense connexió.

Les 8 classes de reserva

Cada classe decideix el tipus de document, l’etiqueta que s’hi posa i quines etiquetes es busquen per a les dates. Per reconèixer-la compten paraules típiques, cadascuna una sola vegada encara que es repeteixi:

ClasseTipus de documentEtiquetaParaules que compten (exemples)
AllotjamentReserva«Alojamiento» («Allotjament»)check-in, check-out, «3 noches» (nights, nuits, notti, noites, nits, Nächte), habitación, huésped, hotel, hostal, apartamento, anfitrión (8 grups)
VolBitllet«Vuelo» («Vol»)boarding o embarque, gate, asiento o seat, vuelo o flight, aeropuerto, equipaje, «Terminal 2» (7 grups)
TrenBitllet«Tren»tren, train o Zug; estación, stazione o Bahnhof; «coche 5», vagón, carriage; andén, platform, quai, binario, Gleis (4 grups)
AutobúsBitllet«Autobús»autobús, bus, autocarro; estación de autobuses; dársena (3 grups)
VaixellBitllet«Barco» («Vaixell»)ferry, barco, naviera; camarote o cabin; «puerto de»; vehículo embarcado (4 grups)
ActivitatEntrada«Actividad» («Activitat»)entradas o tickets; tour, visita guiada, excursión; voucher, bono, código QR; punto de encuentro (4 grups)
CotxeCotxe i conducció«Coche de alquiler» («Cotxe de lloguer»)recogida o pick-up; devolución o drop-off; vehículo; alquiler o rental; conductor o driver; fianza, franquicia o deposit (6 grups)
AssegurançaAssegurança«Seguro de viaje» («Assegurança de viatge»)póliza o policy; asegurado o insured; cobertura o coverage; seguro de viaje o travel insurance (4 grups)

Les 65 marques que reconeix

Una marca reconeguda posa la seva etiqueta al document («Booking.com», «Renfe») i pesa molt a l’hora de decidir la classe. Si la teva no hi és, la reserva es pot llegir igualment per les seves paraules i les seves etiquetes: només hi faltarà l’etiqueta del proveïdor.

ClasseMarquesQuantes
AllotjamentBooking.com, Airbnb, Expedia, Hotels.com, Vrbo, Agoda, Trip.com, Hostelworld, Marriott, Hilton, Accor, Meliá, NH Hotels, Paradores14
VolRyanair, Vueling, Iberia, Air Europa, easyJet, TAP Air Portugal, Volotea, Binter, Lufthansa, Air France, KLM, British Airways, Wizz Air, Transavia, ITA Airways15
TrenRenfe, Iryo, Ouigo, SNCF, Trenitalia, Italo, Deutsche Bahn, Eurostar, Comboios de Portugal9
AutobúsFlixBus, ALSA, BlaBlaCar3
VaixellBaleària, Trasmed, Naviera Armas3
ActivitatGetYourGuide, Tiqets, Civitatis, Viator, Klook, Musement, Ticketmaster7
CotxeHertz, Avis, Europcar, Sixt, Enterprise, Goldcar, Rentalcars.com, Discover Cars, Cicar9
AssegurançaIATI Seguros, Heymondo, InterMundial, Mondial Assistance, Allianz Travel5

Algunes marques només compten amb la forma completa, perquè el seu nom sol és una paraula corrent: «Booking.com» o «Booking B.V.» (booking vol dir «reserva» en anglès), «Italo Treno», «Enterprise Rent-A-Car», «Avis Budget» o «alsa.es». El nom sol («booking», «alsa», «avis») és una menció feble.

Com decideix què és i de qui és

La classe i el proveïdor surten d’un recompte de punts, el mateix per a tots els PDF:

Què sumaPunts
Cada vegada que surt el nom complet d’una marca (en compten fins a 3)5
Cada menció feble a més del nom complet (fins a 3)1
La marca al nom del fitxer («Airbnb_reserva.pdf»)5
Cada grup diferent de paraules típiques de la classe2
  • La puntuació d’una classe és la de les seves paraules més la de la seva millor marca.
  • Guanya la classe amb més punts, i només si en té almenys 4: n’hi ha prou amb dues paraules típiques (un hotel sense plataforma es reconeix com a allotjament), però no amb un «hotel» sol.
  • El proveïdor s’indica si la seva marca, d’aquella classe, té almenys 5 punts: hi ha de sortir el nom complet, o l’ha de portar el nom del fitxer. Tres mencions febles sumen 3 i no n’hi ha prou.

Quines dades treu

DadaCom la trobaOn acaba
LocalitzadorEl que va després d’una etiqueta de localitzador: de 4 a 25 lletres, xifres, punts o guions, sense minúscules i amb alguna xifra, o de 5 a 8 majúscules (un PNR).«Referencia o localizador» («Referència o localitzador»)
TitularUna línia que comença per una etiqueta de titular. Només lletres, espais, punts, guions i apòstrofs, de 2 a 60 caràcters.«A nombre de» («A nom de»)
Data i hora d’iniciLa primera data dins dels 90 caràcters que segueixen l’etiqueta d’entrada, recollida, anada o inici de la classe.«Desde» («Des de»), i a l’estada, l’hora d’entrada
Data i hora de finalIgual, amb l’etiqueta de sortida, devolució, tornada o final. Ha de ser posterior a l’inici.«Hasta» («Fins a»), i a l’estada, l’hora de sortida
Preu i monedaL’import dins dels 45 caràcters que segueixen «Precio total» i les seves variants; si no n’hi ha, després de «Total»; i si no, després de «Precio».L’estada de l’allotjament
Cancel·lació gratuïtaLa primera data dins dels 110 caràcters que segueixen «Cancelación gratuita» o les seves variants.L’estada, amb els seus recordatoris
No reemborsableL’expressió en qualsevol lloc, si no hi ha cancel·lació gratuïta.Les notes: «No reembolsable.»
Nom de l’allotjamentDesprés de «Nombre del alojamiento» i variants; si no, la línia de sobre l’adreça (així ho posa Booking.com); si no, la primera línia de diverses paraules i sense xifres de les 10 primeres.El títol i el lloc del mapa
AdreçaDesprés de «Dirección» i variants; si no, una línia de les 60 primeres amb almenys dues comes, alguna xifra i sense dates, preus ni enllaços.El lloc del mapa
TelèfonDesprés de «Teléfono», «Phone», «Tel» o «Telefon».El lloc del mapa
Número de volDos caràcters de la companyia aèria i 3 o 4 xifres («FR 1234»).El títol: «Vuelo FR1234»

El títol es compon segons la classe: el nom de l’hotel (o «Alojamiento de Booking.com» si no hi surt), «Vuelo» amb el seu número, o la classe i el proveïdor («Tren · Renfe»).

Les etiquetes que reconeix, idioma per idioma

Es busquen sense distingir majúscules ni accents. Un guió vol dir que aquell idioma no té una forma pròpia a la llista (sovint coincideix amb un altre: el català «número de reserva» és la forma castellana).

DadaCastellàAnglèsFrancèsItaliàPortuguèsCatalàAlemany
Entrada (allotjament)check-in, entrada, llegadacheck-in, arrivalarrivéearrivochegadaentradaAnreise
Sortida (allotjament)check-out, salidacheck-out, departuredépartpartenzasaídasortidaAbreise
Anada (bitllets)salida, ida, fecha, fecha de viaje, de vuelo o de salidadeparture, outbound, datedépartpartenza, datadatadata
Tornada (bitllets)vuelta, regresoreturnretourritornotornada
Recollida (cotxe)recogidapick-upprise en chargeritiroretiradaAbholung
Devolució (cotxe)devolución, entregadrop-off, returnrestitutionriconsegnaentregaRückgabe
Inici i final (assegurança)desde, inicio, fecha de efecto / hasta, fin, vencimientofrom, start date, effective / to, end date, valid until, expiry
Dia (activitat)fecha, día, válido paradate, day, valid on, valid fordatadatadata
Localitzadorlocalizador, referencia, número o código de reserva, número de confirmación, número de pedidobooking number, booking reference, confirmation number, confirmation code, reservation number, order number, PNR, record locatornuméro de réservation, code de réservationcodice prenotazionenúmero da reserva, código da reservaReservierungsnummer, Buchungsnummer
Preu totalprecio total, importe total, total a pagar, total pagadototal price, total amount, amount paid, grand totalmontant total, prix totalprezzo totalepreço totalpreu totalGesamtpreis, Gesamtbetrag
Cancel·lació gratuïtacancelación gratuita, cancelar gratis, cancelar sin coste, sin cargo o sin gastosfree cancellation, cancel for free, cancel free of charge, cancel without chargeannulation gratuite, annuler gratuitementcancellazione gratuitacancelamento gratuitocancel·lació gratuïtakostenlose Stornierung, kostenlos stornieren
No reemborsableno reembolsablenon-refundablenon remboursablenon rimborsabilenão reembolsávelno reemborsablenicht erstattungsfähig
Adreçadirección, dirección del alojamiento, ubicaciónaddress, property addressadresseindirizzomorada, endereçoadreçaAnschrift
Nom de l’allotjamentnombre del alojamiento, alojamiento, establecimiento, anuncio, hotelproperty name, hotel name, property, accommodation, listinghébergement, établissementstrutturaalojamentoallotjamentUnterkunft
Titularnombre del cliente, del huésped o del titular, huésped principal, reservado por, pasajero, conductor principal, aseguradoguest name, lead guest, booked by, passenger, main driver, insurednom du clientnome do hóspedenom del client

A més, el preu es busca en últim lloc després de la paraula sola en qualsevol dels set idiomes: precio, price, importe, amount, montant, prix, prezzo, preço, preu.

Dates i hores

FormatExemples que llegeixRegla
ISO 86012026-10-09Any, mes i dia.
Numèric09/10/2026, 9.10.26, 09-10-2026Dia i mes, com a gairebé tot el món. Mes i dia només si no pot ser cap altra cosa: 10/25/2026 és el 25 d’octubre.
Amb paraules9 de octubre de 2026, October 9, 2026, 9. Oktober 2026, 9 d'octubre de 2026, vie, 9 octMesos i les seves abreviatures en els set idiomes, amb ordinals («3rd», «1er», «1º»).
Sense anyvie, 9 octEs tria l’any (l’anterior, el mateix o el següent) que deixa la data més a prop de l’inici del viatge, o d’avui si el viatge encara no té dates.
  • Les abreviatures que també són paraules (out, des, set, gen, mag, lug, ott, mai, mar) només compten com a mes si porten l’any al darrere: «3 out of 5 guests» no és el 3 d’octubre.
  • En una taula amb «Check-in Check-out» en una línia i les dues dates a sota, la primera data després de «Check-out» és la d’entrada, i se la salta.
  • Si no hi ha etiqueta, es fa servir la primera data que no vagi després de «fecha de reserva», «emitido», «booked on», «fecha de nacimiento» o «caduca». En una assegurança, no s’endevina.
  • Un allotjament amb «3 noches» i sense data de sortida llegible: la sortida es calcula sumant les nits a l’entrada.
  • Una data de final a més de 62 dies de l’inici es descarta: és una altra data que s’ha colat.
  • Hores: 15:00, 15h00, 3:00 PM o 3 PM. A l’hora d’inici guanya la que va amb «desde», «from» o «a partir de»; a la sortida d’un allotjament, l’última amb «hasta», «until» o «before»: «de 07:00 a 11:00» és sortida fins a les 11:00.

Preu i moneda

La moneda surt del símbol o del codi que hi ha al costat de l’import, davant o darrere («€ 390,00», «390,00 EUR»), o del codi entre parèntesis després de «Total (EUR)». Reconeix 37 codis ISO 4217:

EUR USD GBP JPY CHF CAD AUD MXN ARS COP CLP PEN BRL DKK SEK NOK PLN CZK HUF
RON BGN TRY MAD THB CNY HKD SGD NZD ZAR INR KRW ISK IDR VND EGP AED ILS
SímbolEs llegeix com
EUR
£GBP
$ i US$USD
¥JPY
R$BRL
C$CAD
A$AUD

Els separadors s’interpreten com a cada país: 1.234,56 i 1,234.56 són el mateix, 1 234,56 també, «1.234» són mil dos-cents trenta-quatre i «12,50» són dotze amb cinquanta.

Un «$» sol es llegeix sempre com a dòlar dels Estats Units, i un «¥», com a ien. Si reserves en pesos mexicans o en iuans i el PDF només posa el símbol, corregeix la moneda a l’estada. Si no hi ha moneda, l’estada agafa la del viatge.

Què fa amb el que llegeix

La regla és una de sola: mai no trepitja el que algú ha escrit.

  • En un document nou, si canvies el tipus o el títol mentre es llegeix, es queda el teu. Si canvies el tipus que s’ha llegit (una «Reserva» que passes a «Entrada»), no s’hi posen les etiquetes de la lectura.
  • En un document que ja existeix, només s’omplen el localitzador, el titular i les dates si són buits, i el tipus només si era «Otro» («Altre»). Si el tipus llegit és diferent, la fitxa ofereix «Cambiar el tipo a…» («Canviar el tipus a…») sense canviar-lo.
  • S’hi afegeixen dues etiquetes, la del proveïdor i la de la classe («Booking.com» i «Alojamiento»), sense treure les que ja tenia.

Si és un allotjament amb entrada i sortida, i el document és una reserva, s’associa a una estada, les nits d’aquell hotel en el viatge:

  1. Si ja hi ha una estada enllaçada a aquest document, es completa (hores, preu, cancel·lació) sense tocar el que ja tingui.
  2. Si no, es busca l’hotel: el lloc relacionat del document o un allotjament del mapa amb el mateix nom (almenys el 60 % de les paraules en comú, sense comptar «hotel», «apartamento», «de» o «the»).
  3. Si aquell hotel té una opció sense document enllaçat que coincideix amb aquestes nits, passa a reservada, amb el document enllaçat i les dates del PDF.
  4. Si l’hotel no és al mapa, la seva adreça va a Nominatim (el cercador d’OpenStreetMap), o el seu nom dins de la zona de la destinació. Si ja tens un allotjament a menys de 150 m del que s’ha trobat, és aquest; si no, es crea el lloc amb la seva adreça i el seu telèfon, i se’n busquen les fotos.
  5. Si no hi havia cap opció, es crea una estada reservada nova, en aquell lloc si s’ha trobat. Sense xarxa, o si Nominatim no troba res, queda sense situar, amb el seu nom, i se situa després a mà.

Amb l’estada arriben els recordatoris de l’allotjament: cancel·lar gratis, «Mañana duermes en…» («Demà dorms a…») i «Hoy dejas…» («Avui deixes…»); la taula completa és a Documents. Si un document de reserva té dates però no s’ha associat, la seva fitxa ofereix «Es un alojamiento: añadir estas noches» («És un allotjament: afegir aquestes nits»).

Nominatim només rep el text de l’adreça (o el nom de l’hotel i la zona), amb un mínim d’1,1 segons entre peticions, com demana la seva política d’ús. Mai el localitzador, el titular ni el preu.

Exemple: una confirmació de Booking.com per a Lisboa

Limitacions

  • Fotos i escanejats, no. Només es llegeix text; no hi ha OCR.
  • Provat amb textos d’exemple, no amb confirmacions reals de cada proveïdor. Les proves imiten el que pdf.js treu de Booking.com (en castellà i en anglès, amb taula), Airbnb (en tots dos idiomes), un hotel sense plataforma, Ryanair, Renfe i Europcar, i un PDF generat es llegeix de principi a fi. Amb cadascuna de les 65 marques, no s’ha provat.
  • Un PDF amb el text desordenat (columnes que pdf.js lliura en un altre ordre) pot deixar les etiquetes lluny dels seus valors, i la dada no surt.
  • Només un bitllet per document. Un PDF d’anada i tornada dona la data d’anada i la de tornada, però no dos documents, ni escales.
  • Només el primer PDF quan tries diversos fitxers alhora en crear un document.
  • Tot el que es llegeix es pot corregir. Mira sempre la fitxa: l’app t’ho demana amb «Revisa que esté bien.»

Si la teva reserva no s’ha llegit bé

Corregeix les dades a mà a la fitxa: es desen soles i la lectura no les torna a trepitjar. I si vols que la versió següent la llegeixi millor, explica-ho al formulari de contacte amb el motiu «Una reserva en PDF que no s’ha llegit bé». Ajuda dir:

  • El proveïdor i l’idioma de la confirmació.
  • Quina dada ha fallat (la data de sortida, el preu, el nom de l’hotel) i què posava el PDF al costat d’aquesta dada, amb l’etiqueta tal com era.
  • Si el PDF és un correu imprès, una descàrrega del web del proveïdor o una targeta d’embarcament.

No enganxis localitzadors, noms, adreces ni números de targeta reals: canvia’ls per dades inventades abans d’enviar-ho («XXXX1234», «Ana Ejemplo»). El formulari no admet adjunts, i no cal el PDF: n’hi ha prou amb les línies que fallen.

Com comprovar-ho tu

No cal creure’s res de tot això: són els passos per veure-ho a l’app amb els teus propis ulls.

  1. Obre un viatge amb dates i entra a «Alojamiento» («Allotjament»).
  2. Prem «Desde el PDF de la reserva» («Des del PDF de la reserva») i tria la confirmació en PDF d’un hotel. Mentre llegeix surt «Leyendo el PDF…» («Llegint el PDF…»).
  3. Si és un allotjament, surt «Leído en este dispositivo:» («Llegit en aquest dispositiu:») amb el nom i les nits, i l’estada apareix a la franja de nits.
  4. Ves a «Documentos» («Documents») i obre el document creat: el localitzador, les dates i les etiquetes del proveïdor i la classe ja hi són.
  5. Prova a «Documentos» amb «Añadir documento» («Afegir document») i un bitllet de tren o d’avió: el tipus passa a «Billete» («Bitllet») i el títol es proposa sol.

Obrir l’app

Preguntes freqüents

Es puja el PDF a algun servidor per llegir-lo?

No. Es llegeix al teu dispositiu amb pdf.js, sense IA i sense connexió. L’única cosa que pot sortir és l’adreça d’un allotjament que no és al teu mapa, cap a Nominatim d’OpenStreetMap, per situar-lo; el fitxer, el localitzador i el titular no surten.

El meu proveïdor no és entre les 65 marques. Es llegeix igualment?

Pot ser. La classe també es reconeix per les seves paraules (n’hi ha prou amb dos grups, com «check-in» i «habitación»), i les dades es busquen per les seves etiquetes, no pel proveïdor. El que hi falta és l’etiqueta amb el nom de la marca.

Llegeix bitllets d’avió i de tren, o només hotels?

Les 8 classes: allotjament, vol, tren, autobús, vaixell, activitat, cotxe i assegurança. Només els allotjaments creen nits al viatge; un bitllet es queda com a document amb la data, l’hora, el localitzador i, si té número de vol, el títol «Vuelo FR1234».

Per què ha posat un any equivocat?

Si la confirmació no escriu l’any («vie, 9 oct»), es tria el que deixa la data més a prop de l’inici del viatge, o d’avui si el viatge no té dates. Posa les dates del viatge abans d’afegir-hi les reserves, o corregeix la data a la fitxa.

Puc llegir un PDF protegit amb contrasenya?

No. Es desa igualment i s’obre al visor si el teu dispositiu ho permet, però les dades s’omplen a mà.

Fonts i referències

La documentació original del que se cita aquí, consultada en la data de revisió d’aquesta pàgina.

  1. PDF.js Mozilla
  2. Repositori de PDF.js (codi i llicència Apache-2.0) Mozilla, a GitHub
  3. ISO 4217, codis de moneda (agència de manteniment) SIX Group
  4. Nominatim Usage Policy OpenStreetMap Foundation
  5. Nominatim: Search API Nominatim

Continua llegint

Aquesta pàgina en Markdown, per llegir-la amb altres programes