Avatar billede KurtG Forsker
21. januar 2025 - 17:16 Der er 7 kommentarer

PHP-funktion til at søge i pdf-filer

Jeg skal lave et site, der kan søge i nogle pdf-filer. De indeholder nogle avissider, som er skannet og lavet til søgbar pdf.
Findes der et modul eller lignende til at gøre det og samtidig fortælle hvilken side ordet er fundet på?
Avatar billede arne_v Ekspert
21. januar 2025 - 17:55 #1
Jeg kan se 3 måder at løse dette på:

1) lav en søge PHP side som itererer over alle filer og bruger et PDF library (som f.eks. FPDF) til at læse filerne. Overkommeligt men langsomt og resourcekrævende.

2) lav et load PHP script som itererer over alle filer og bruger et PDF library (som f.eks. FPDF) til at læse filerne og gemmer teksten i en fulltext database (MySQL har fulltext mulighed) og en søge PHP side som bruger den fulltext database. Mere arbejde men hurtigere og mere effektivt.

3) brug en text search engine med support for PDF (der er mange - en af dem er Solr med Tika), prop PDF filerne ind i den og lave en søge PHP side som requester information via web service kald til  text search engine. Nemt og effektivt, men medmindre din hosting facilitet har sådan noget kørende allerede er det nok for krævende at få op at køre.
Avatar billede KurtG Forsker
21. januar 2025 - 19:24 #2
Tak, Arne.
Men jeg er ikke helt med: hvad indbefatter itererer?
Avatar billede arne_v Ekspert
21. januar 2025 - 19:40 #3
Det afhænger af hvordan de PDF filer er organiseret.

Men hvis de bare er i et eller flere separate data directories så kan opendir/readdir/closedir gøre det.

Giver det mening eller snakker jeg sort?
Avatar billede KurtG Forsker
21. januar 2025 - 19:54 #4
Ikke helt sort, så jeg vil studere dine forslag lidt inden jeg spørger mere dumt!
Avatar billede a3-seo.dk Ekspert
22. januar 2025 - 14:34 #5
For at søge tekst i pdf dokumenter skal de først være gemt med tekstgenkendelse (Adope acrobat pro). Der efter kan der søges i dem, som om det var rene text filer.
Det vil spare meget tid med opsætningen af søgefunktionen og ligeledes database og server belastning
Avatar billede Kim Schacht Juniormester
22. januar 2025 - 22:05 #6
Ja, der findes løsninger i PHP til at søge i PDF-filer og finde, på hvilken side søgeordet forekommer. For at implementere dette kan du bruge et PHP-bibliotek som **TCPDF**, **FPDI**, eller mere avanceret som **Poppler-utils** (via PHP-kommandoer) eller **PdfParser**.

Her er nogle trin og en løsning:

---

1. **Brug af PdfParser (smarte værktøjer til tekstanalyse)**
PdfParser er et PHP-bibliotek, der kan ekstrahere tekst fra PDF-filer. Du kan bruge det til at søge i teksten og finde, hvilken side der indeholder søgeordet.

Installation
Installer **PdfParser** via Composer:
```bash
composer require smalot/pdfparser
```

Kodeeksempel
```php
<?php
require 'vendor/autoload.php';

use Smalot\PdfParser\Parser;

// Indlæs PDF-filen
$parser = new Parser();
$pdf = $parser->parseFile('path/to/your/file.pdf');

// Få alle sider i PDF
$pages = $pdf->getPages();
$searchWord = 'avissider'; // Søg efter dette ord

foreach ($pages as $index => $page) {
    $text = $page->getText();
    if (stripos($text, $searchWord) !== false) {
        echo "Ordet '{$searchWord}' blev fundet på side " . ($index + 1) . "\n";
    }
}
?>
```

---

2. **Fordele ved PdfParser**
- Ekstraherer tekstside for side.
- Let at implementere.
- Finder det præcise sted, hvor søgeord findes.
- Virker med søgbare PDF'er (OCR-baserede PDF'er).

---

3. **Hvis PDF'en ikke har tekst (billede-baseret OCR)**
Hvis PDF-filerne kun er skannede billeder og ikke har søgbare tekstlag, skal du bruge et OCR-værktøj som **Tesseract OCR**. PHP kan interagere med Tesseract for at analysere billedteksten.

Installation af Tesseract og PHP-eksempel
1. Installer Tesseract på din server.
2. Ekstraher tekst fra hver side og søg med lignende logik.

Eksempel:
```php
$output = [];
exec("tesseract path/to/page1.pdf stdout", $output);
$text = implode("\n", $output);
if (stripos($text, 'søgeord') !== false) {
    echo "Ordet blev fundet på denne side!";
}
```

---

4. **Kombination med UI**
Du kan tilføje et brugervenligt søgefelt på dit site, hvor brugere kan skrive et søgeord, og serveren kører ovenstående kode for at vise resultater.

---
Avatar billede KurtG Forsker
23. januar 2025 - 14:06 #7
Det er efterhånden længe siden, jeg lavede hjemmesider, så det vil kræve lidt genoptræning.
Jeg har alle filerne som pdf, der har været gennem OCR, så det er tekst, der skal findes.
Umiddelbart er #6 det, der siger mig mest, så når jre får afsluttet fotograferingen, vil jeg forsøge med det!
Tak til jer alle for jeres svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Sådan: Opgradér din printerløsning uden store investeringer