1. Achtergrond
De Gouda Tijdmachine wil uit een enorme hoeveelheid historische informatie de ontwikkeling van de stad Gouda reconstrueren. Alle informatie over gebouwen, wegen, water, bedrijven en bewoning wordt digitaal vastgelegd, aan elkaar gekoppeld en op de kaart getoond.
Eén van de rijkste bronnen zijn historische kranten zoals de Goudsche Courant (1862-1955). Een krantenbericht, advertentie of familiebericht dat aan een adres is gekoppeld, brengt de geschiedenis van een pand en zijn bewoners tot leven voor bewoners en onderzoekers.
2. Het probleem
Vrijwilligers van de Gouda Tijdmachine hebben voor één straat, de Wijdstraat, handmatig digitale krantenknipsels geknipt, gecategoriseerd en aan adressen gekoppeld. Zie het resultaat onderaan deze Project Wijdstraat Locaties pagina.

Het doel is om dit voor heel Gouda te realiseren. Alleen al die ene straat kostte veel vrijwilligersuren. Gouda telt honderden straten en de gedigitaliseerde kranten beslaan bijna een eeuw met tienduizenden pagina’s. Handmatig knippen, ook via crowdsourcing, is op die schaal niet haalbaar. Er is dus een geautomatiseerde manier nodig om knipsels te herkennen, te categoriseren en aan adressen in Gouda te koppelen.
Dat is inhoudelijk lastiger dan het lijkt:
- Waar begint en eindigt een bericht? Een krantenpagina is een dichte lay-out van kolommen. De OCR levert tekstblokken en regels met coördinaten, maar geen artikelgrenzen. Berichten lopen door over kolommen, advertenties staan tussen nieuwsberichten.
- OCR-fouten. Oud zetsel, slijtage en vlekken leiden tot fouten in de herkende tekst. Straatnamen en huisnummers zijn juist de korte stukjes tekst die vaak beschadigd zijn.
- Adressen zijn zelden compleet. Berichten spreken over “in de Wijdstraat naast de apotheek”, “wijk B nummer 12”, een oud perceel- of wijknummer, of alleen de naam van een winkel. Straatnamen en huisnummering zijn in de loop van de tijd veranderd.
- Niet alles is Gouda. Dezelfde straatnamen komen in andere plaatsen voor en een deel van de berichten gaat over de regio. Een bericht kan meerdere adressen betreffen, of helemaal geen.
- Categorie afleiden. Of iets een artikel, advertentie of familiebericht is, valt alleen af te leiden uit opmaak en formulering.
- Vertrouwen. Een automatisch gemaakt knipsel is pas bruikbaar als een vrijwilliger het snel kan controleren en corrigeren.
De kernvraag: hoe herken je in gedigitaliseerde krantenpagina’s automatisch de afzonderlijke berichten, bepaal je welke daarvan over een adres in Gouda gaan, en lever je dat op als betrouwbare, controleerbare knipsels?
3. Beschikbare data
- Gedigitaliseerde kranten met OCR (PageXML): het Streekarchief Midden-Holland heeft de kranten laten scannen en van OCR voorzien. Per pagina zijn de tekst en de exacte coördinaten van blokken en regels op de scan vastgelegd in PageXML-bestanden.
- Scans via de IIIF Image API: de hoge-resolutiescans zijn beschikbaar via IIIF, een open standaard voor het ontsluiten van digitaal erfgoed. Elk vlak op een scan is daarmee met coördinaten adresseerbaar.
- Ground truth Wijdstraat: de handmatig geknipte artikelen van de Wijdstraat, vastgelegd als W3C Web Annotations. Elke annotatie bevat het vlak op de scan (IIIF-coördinaten) en metadata: categorie (artikel, advertentie, familiebericht), de herkende locatie en eventuele trefwoorden. Bruikbaar als voorbeeld én als testset.
- Adressen en panden van Gouda: de Gouda Tijdmachine stelt de adressen en panden van Gouda als Linked Open Data beschikbaar, zodat een herkend adres aan een bestaande URI gekoppeld kan worden.
4. Opdracht en scope
Opdracht
Ontwerp en bouw een geautomatiseerde oplossing die uit de PageXML en de IIIF-scans zelfstandig berichten, advertenties en familieberichten onderscheidt, bepaalt of en welk adres in Gouda erin wordt genoemd, en daaruit W3C Web Annotations produceert die een vrijwilliger kan controleren. Hoe je dat aanpakt is aan jullie: onderbouw de gekozen aanpak en laat zien hoe goed ze werkt.
Scope en afbakening
In scope
- Herkennen van adressen, straatnamen, wijk- en perceelnummers en andere plaatsaanduidingen in Gouda, en koppelen daarvan aan het adressenbestand van de Gouda Tijdmachine.
- Categoriseren van knipsels (artikel, advertentie, familiebericht).
- Produceren van annotaties volgens het W3C Web Annotation datamodel.
- Een verificatiestap waarin een vrijwilliger voorgestelde knipsels en adreskoppelingen snel kan goedkeuren of aanpassen.
Buiten scope
- Lay-outanalyse of artikelsegmentatie op basis van de scans zelf; de OCR-blokken uit de PageXML zijn het vertrekpunt.
- Herkenning van duplicaten (bijvoorbeeld wekelijks terugkerende advertenties).
- Integratie in de productiewebsite van de Gouda Tijdmachine; de oplevering vindt plaats als dataset, API of losstaande toepassing.
5. Randvoorwaarden
- Open standaarden: de output voldoet aan het W3C Web Annotation datamodel en verwijst naar de scans via IIIF, zodat de Gouda Tijdmachine de knipsels direct kan opnemen.
- Mens in de lus: automatisch gegenereerde knipsels en adreskoppelingen zijn voorstellen; ze worden pas definitief na bevestiging door een vrijwilliger.
- Open source: de oplossing wordt onder een open-source licentie gepubliceerd en is herbruikbaar door andere tijdmachines en archieven.
6. Op te leveren producten
- Werkende oplossing (proof of concept): verwerkt een selectie van het bronmateriaal van begin tot eind tot de gevraagde output.
- Verificatie-interface: een eenvoudige demo waarin een vrijwilliger de voorgestelde resultaten visueel controleert en goedkeurt of corrigeert.
- Documentatie: architectuurbeschrijving, installatiehandleiding en een evaluatierapport over de nauwkeurigheid, met aanbevelingen voor opschaling.
- Codebase: gehost in een open GitHub-repository onder een open-source licentie, bijvoorbeeld binnen https://github.com/gouda-tijdmachine.
7. Succescriteria
- Nauwkeurigheid: de kwaliteit van de resultaten is aantoonbaar gemeten tegen de beschikbare ground truth, met inzicht in waar de oplossing goed werkt en waar ze faalt.
- Controleerbaarheid: elk voorstel is voor een mens snel te beoordelen en de oplossing maakt duidelijk waarop een voorstel is gebaseerd.
- Standaardconformiteit: de output voldoet aan de in de randvoorwaarden genoemde open standaarden, zodat de Gouda Tijdmachine de resultaten zonder bewerking kan overnemen.
- Herbruikbaarheid: de oplossing is modulair opgezet, zodat vervolgstudenten, de Gouda Tijdmachine of andere tijdmachines en archieven ermee verder kunnen.
8. Begeleiding
- Data: directe toegang tot het bronmateriaal, de IIIF-endpoints en de bestaande annotaties en metadata.
- Begeleiding: periodieke afstemming met een technisch aanspreekpunt (met Informatica-achtergrond en track-record in het digitaal erfgoed) vanuit de Gouda Tijdmachine voor inhoudelijke vragen, feedback op tussenresultaten en domeinkennis over de Goudse geschiedenis.