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å?
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.
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
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 ```
// 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.
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.
Synes godt om
Ny brugerNybegynder
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.