PDF kan worden bekeken maar niet gekopieerd. Het is mogelijk dat het geen scan is: controleer eerst de tekstlaag en de tekentoewijzing
Als er geen tekst is, kan deze niet direct worden beoordeeld als "de tekstlaag is normaal", noch kan deze direct worden beoordeeld als een gescande kopie. De tekst, alternatieve tekens en verwijzingen naar paginaafbeeldingen worden hieronder respectievelijk vastgelegd en de te beoordelen status wordt weergegeven; verwijzingen naar afbeeldingen bewijzen niet dat de afbeelding de hele pagina beslaat of dat de tekst herkenbaar is.
Als u de tekst in de PDF wel kunt zien, maar deze niet kunt kopiëren, is het mogelijk geen gescande kopie of is er mogelijk een probleem met de tekentoewijzing. Dit artikel is geschreven voor ontwikkelaars en documentverwerkers die PDF-inhoud moeten extraheren, vertalen of structureren. Na het lezen weet u eerst hoe u problemen op tekstniveau en beeldinhoud kunt onderscheiden, en hoe u uniforme signalen kunt gebruiken om te bepalen wat u vervolgens moet doen.
De code en voorbeelden hier maken gebruik van synthetische voorbeelden die de steekproefcontroles in een geïsoleerde omgeving hebben doorstaan en vormen geen garantie voor alle echte bestanden of productprestaties. Voordat u belangrijke documenten verwerkt, dient u de originelen te bewaren en deze te controleren op basis van de grenzen en acceptatie-items in de tekst.
De PDF kan worden bekeken, maar niet gekopieerd. Is het een gescande kopie? Conclusie in één zin
Kan niet direct oordelen. Controleer eerst de tekstlaag en de tekentoewijzing, kijk vervolgens naar de paginaafbeelding en bepaal ten slotte of het een scan of een toewijzingsfout is.
| jouw situatie | Aanbevolen praktijken | reden |
|---|---|---|
| Kan de tekst zien, onleesbare tekens of spaties kopiëren | Controleer ToUnicode-toewijzing en lettertypecodering | Het beeld is normaal, maar de tekstlaag is kapot, meestal als gevolg van ontbrekende of verkeerde mapping. |
| De gekopieerde karakters zien er redelijk uit, maar hebben een onjuiste semantiek | Controleer de extractieresultaten aan de hand van visuele inhoud | Heuristische mapping kan verkeerde tekens opleveren en een niet-nulcontrole doorstaan |
| Er staat geen tekst, maar er staan wel afbeeldingen op de pagina | Controleer of de afbeelding tekst bevat en bepaal vervolgens of OCR nodig is | Afbeeldingscitaten zijn niet hetzelfde als scans van een volledige pagina, noch bewijzen ze dat de tekst leesbaar is |
| Tekst noch afbeeldingen worden uitgecheckt | Bekijk de inhoud van de paginatekening | Er is geen manier om te concluderen dat de pagina leeg is |
Waarom is de gekopieerde code onleesbaar?
Gebruikers kunnen de tekst normaal in de browser of reader zien, maar de gekopieerde tekst is onleesbaar, blanco of irrelevant. Dit is meestal geen beschadigd bestand en het is ook niet noodzakelijkerwijs een gescande kopie. De hoofdoorzaak is dat de glyph (Glyph) naar Unicode-toewijzingstabel (ToUnicode CMap) in de PDF ontbreekt of verkeerd is.
Rendering-engines vertrouwen op glyph-indexen om visuele inhoud te tekenen, terwijl klembord- en tekstextractietools afhankelijk zijn van mapping-tabellen om semantische karakters te herstellen. Wanneer deze twee worden verbroken, verschijnt er een "visueel normale, machinaal onleesbare" laag slechte tekst.
Voordat u documentvertaling of gestructureerde extractie uitvoert, moet u eerst bevestigen of het probleem in de mapping ligt of dat de pagina zelf een afbeelding is. Anders zullen daaropvolgende OCR- of NLP-processen gebaseerd zijn op het verkeerde uitgangspunt.
Breukmechanisme tussen glyph-index en Unicode-toewijzing
Dankzij de PDF-specificatie mogen lettertypen alleen glyph-omtrek- en breedte-informatie insluiten, maar geen tekencoderingstoewijzing. De volgende omstandigheden kunnen breuk veroorzaken:
- Software die PDF genereert, schrijft de ToUnicode-tabel niet correct
- Er wordt gebruik gemaakt van aangepaste codering, maar er zijn geen decoderingsregels beschikbaar
Op dit moment kan de extractor alleen de originele glyph-ID (CID) verkrijgen. Deze ID's zijn betekenisvol voor de renderer, maar hebben geen waarde voor de tekstverwerking.
Sommige tools gebruiken heuristieken om de afbeelding te raden, en het resultaat kan tekens zijn die redelijk lijken, maar in werkelijkheid verkeerd zijn, zoals het omzetten van Chinese interpunctie in Latijnse letters, of het vervangen van cijfers door controletekens. Dit soort 'dummytekst' is subtieler dan pure witruimte, omdat het de niet-nulcontrole kan doorstaan, maar stille gegevensvervuiling in downstream-links zal veroorzaken.
De sleutel tot het beoordelen van dergelijke problemen is niet om te zien of de tekst geselecteerd kan worden, maar om te verifiëren of de geëxtraheerde string semantisch consistent is met de visuele inhoud.
Gebruik PyMuPDF voor diagnostiek van geheugensynthese
De volgende code construeert de invoer in het geheugen en verifieert de diagnostische logica:
from io import BytesIO
from PIL import Image
import pymupdf
def inspect(page):
text = page.get_text().strip()
images = page.get_images()
if "\ufffd" in text:
state = "review_replacement_characters"
elif text:
state = "text_present_needs_semantic_review"
elif images:
state = "image_without_extracted_text"
else:
state = "empty_text_needs_review"
return {"state": state, "characters": len(text), "image_refs": len(images)}
with pymupdf.open() as doc:
doc.new_page().insert_text((50, 50), "Text sample")
doc.new_page()
picture = BytesIO()
Image.new("RGB", (16, 16), "red").save(picture, format="PNG")
doc.new_page().insert_image(pymupdf.Rect(10, 10, 100, 100), stream=picture.getvalue())
assert inspect(doc[0])["state"] == "text_present_needs_semantic_review"
assert inspect(doc[1])["state"] == "empty_text_needs_review"
assert inspect(doc[2])["state"] == "image_without_extracted_text"
assert inspect(doc[2])["characters"] == 0
In de bovenstaande code verkrijgt de functie diagnose_text_layer de originele tekst via get_text("text"), gebruikt unicodedata.category om controletekens en witruimtetekens te filteren, en berekent het aandeel van de effectieve inhoud. Tegelijkertijd detecteert het de aanwezigheid van beeldblokken via get_text("blocks").
De twee beweringen verifiëren twee gevallen: een normaal document met een afdrukbaarheidspercentage hoger dan 0,9, en een gescand document met een tekentelling van nul. Dit omvat de kernvertakkingslogica.
Het is belangrijk op te merken dat deze diagnose uitsluitend gebaseerd is op statistische kenmerken. Voor gecodeerde lettertypen of speciale coderingen is handmatige beoordeling nog steeds vereist.
📊 Kernvergelijking
De volgende tabel bevat de inspectierichtlijnen die overeenkomen met verschillende signalen en de conclusies die niet mogen worden getrokken:
| Signaal | Volgende stap om te controleren | conclusies die niet getrokken mogen worden |
|---|---|---|
| Er is afdrukbare tekst | Controleer semantiek, volgorde en bronnen | Als je het kunt extraheren, betekent dat dat het correct is |
| Er zijn alternatieve personages | Bekijk codering en lettertypemapping | Alle personages zijn verloren gegaan |
| Er zijn foto's maar geen tekst | Controleer of de afbeelding tekst bevat | Het moet een volledige pagina scan zijn |
| Noch tekst noch afbeeldingen werden gedetecteerd | Bekijk paginatekeningen | Het moet een blanco pagina zijn |
🎯 Welke methode past bij jou?
Als je de tekst kunt zien maar niet kunt kopiëren
Geef prioriteit aan het controleren van ToUnicode-mappings en lettertypecoderingen, die meestal worden veroorzaakt door mapbreuken.
Als de gekopieerde tekst er normaal uitziet maar fouten bevat,
Gebruik visuele inhoud om resultaten paragraaf voor alinea te vergelijken en te extraheren; kijk niet alleen of het niet nul is.
Als de pagina alleen afbeeldingen heeft en geen tekst
Controleer of de afbeelding tekst bevat en beslis vervolgens of OCR nodig is. Ga er niet vanuit dat de hele pagina een scan is.
Als je je voorbereidt op documentvertaling
Eerst de tekstintegriteitscontrole voltooien en vervolgens het desensibiliseerde voorbeeld overdragen aan het vertaalproces.
Gebruik deze checklist voor documentvertaling
Controleer eerst zorgvuldig de paginavolgorde, bronlocatie en tekstintegriteit, en dien vervolgens hetzelfde desensitisatievoorbeeld in bij het vertaalproces. Na de vertaling is het nog steeds nodig om te controleren of de titel, hoofdtekst en bijschriften correct overeenkomen; het is niet voldoende om alleen te oordelen op de soepelheid van de tekst.
OmniDoc (Productinvoer) biedt een multiformaat documentvertaalportaal, waarbij de officiële website OCR, woordenlijsten en tweetalige referentiefuncties introduceert. Als je direct vanaf het bestand wilt beginnen, kun je dit pad evalueren met echte samples.
Gebruik alstublieft het angstbestand dat u recht heeft te uploaden en verifieer de resultaten van de checklist in dit artikel. Dit beweert niet dat OmniDoc gebruikmaakt van de open-source bibliotheken of interne algoritmen die in dit artikel worden genoemd, noch vervangt het productprestatietesten door voorbeelden.
❓ Veelgestelde Vragen (FAQ)
1. Als je tekst kunt extraheren, betekent dat dan dat de tekstlaag correct is?
Nee. De geëxtraheerde inhoud moet ook worden gecontroleerd op semantiek, volgorde en bron, en als de mapping onjuist is, kan het schijnbaar redelijke tekens produceren.
2. Als er afbeeldingen op de pagina staan, betekent dat dan dat het een scan is?
Niet per se. Afbeeldingsreferenties bewijzen niet dat de afbeelding de hele pagina bedekt, noch bewijst het dat de tekst herkenbaar is; je moet controleren of de afbeelding tekst bevat.
3. Als er geen tekst of afbeeldingen worden gedetecteerd, betekent dat dan dat de pagina leeg is?
Op basis hiervan kan geen conclusie worden getrokken. Je moet de weergave van de pagina controleren voordat je een oordeel velt.
4. Kan dit diagnostische script voor alle PDF's worden gebruikt?
Nee. Het is uitsluitend gebaseerd op statistische kenmerken; versleutelde lettertypen of speciale coderingen vereisen nog steeds handmatige verificatie.
📝 Samenvatting
PDF's kunnen worden gelezen maar niet gekopieerd; controleer eerst de tekstlagen en tekenmappings, bekijk dan de beeldinhoud en bepaal tenslotte of het een gescande kopie is. Bewaar vóór de verwerking de originele documenten en bekijk elk item met inspectieartikelen.
Ervaar nu: upload je document om te beginnen met vertalen, waarbij je de originele opmaak behoudt
Verder lezen
-Gedetailleerde uitleg van PyMuPDF-tekstextractie -Officiële documenthomepage van PyMuPDF


