PDF இலிருந்து எடுக்கப்பட்ட படங்கள் பக்கத்தில் காணப்படுவதை விட வித்தியாசமாக இருப்பது ஏன்?
வெளிப்படைத்தன்மை கொண்ட படங்கள் தனித்தனியாக பிரதான படமாகவும் மென்மையான முகமூடியாகவும் சேமிக்கப்படும். அடுத்து, ஒரு RGBA PNG ஐ உருவாக்க தலையணையைப் பயன்படுத்தவும், இன்-மெமரி PDF ஐச் செருகவும், மேலும் முக்கிய படம் மற்றும் SMask ஆகியவற்றைக் கணக்கிடவும். பிரதான பட பைட்டுகளைப் பிரித்தெடுப்பது முழுமையான வெளிப்படைத்தன்மை விளைவைப் பெறுவதற்கு சமமாக இருக்காது, அல்லது பக்கத்தில் உள்ள அனைத்து காட்சி நிகழ்வுகளையும் மறுகட்டமைப்பதற்கு சமமாகாது.
PDF களில் இருந்து நீங்கள் பிரித்தெடுக்கும் படங்கள் பெரும்பாலும் நீங்கள் பக்கத்தில் பார்ப்பதை விட வித்தியாசமாகத் தோன்றும்: அவை முற்றிலும் கருப்பு, தவறான அளவு அல்லது பின்னணிகள் அல்லது வாட்டர்மார்க் இல்லை. சிக்கல் பொதுவாக குறியீட்டில் இல்லை, ஆனால் நீங்கள் PDF க்குள் அசல் படப் பொருளைப் படிக்கிறீர்கள் மற்றும் பக்கத்தை வழங்கும்போது கலவை வழிமுறைகளைக் காணவில்லை.
PDF படங்களை அலசுவதற்கு ஸ்கிரிப்ட்களைப் பயன்படுத்த வேண்டிய டெவலப்பர்கள் மற்றும் ஆவணச் செயலிகளுக்காக இந்தக் கட்டுரை எழுதப்பட்டுள்ளது. இது OCR முன் செயலாக்கம் மற்றும் உள்ளடக்க மறுசீரமைப்பு போன்ற காட்சிகளுக்கு ஏற்றது. படித்த பிறகு, அசல் பொருளுக்கும் பக்கக் காட்சிக்கும் உள்ள வித்தியாசத்தை நீங்கள் புரிந்து கொள்ளலாம், SMask (மென்மையான முகமூடி) ஏன் வெளிப்படையான பகுதிகளை இழக்கிறது என்பதை அறியலாம் மற்றும் செயற்கை மாதிரிகளைப் பயன்படுத்தி சுய-சோதனை முறைகளின் தொகுப்பில் தேர்ச்சி பெறலாம்.
இந்த கட்டுரை செயலாக்க முறையை நிரூபிக்க செயற்கை மாதிரிகளைப் பயன்படுத்துகிறது. குறியீடு ஒரு தனிமைப்படுத்தப்பட்ட சூழலில் எடுத்துக்காட்டுகளுடன் சரிபார்க்கப்பட்டது மற்றும் அனைத்து உண்மையான கோப்புகள் அல்லது தயாரிப்பு செயல்திறனுக்கான உத்தரவாதம் அல்ல. முக்கியமான ஆவணங்களைச் செயலாக்குவதற்கு முன், அசல்களை வைத்து, உரையில் உள்ள எல்லைகள் மற்றும் ஏற்றுக்கொள்ளும் உருப்படிகளின்படி அவற்றை மதிப்பாய்வு செய்யவும்.
PDF படத்தை பிரித்தெடுத்தல் முடிவுகள் பக்கத்துடன் ஒத்துப்போகவில்லையா? ஒரு வாக்கியத்தின் முடிவு
பிரித்தெடுக்கப்பட்ட முக்கிய பட பைட்டுகள் பக்கத்தின் முழுமையான விளைவுக்கு சமமாக இல்லை. SMask ஒரே நேரத்தில் செயலாக்கப்பட வேண்டும், மேலும் வாசகரின் உண்மையான ரெண்டரிங் முடிவு ஏற்றுக்கொள்ளும் அளவுகோலாகப் பயன்படுத்தப்படுகிறது.
| உங்கள் நிலைமை | பரிந்துரைக்கப்பட்ட நடைமுறைகள் | காரணம் |
|---|---|---|
| பிரித்தெடுத்தல் விளைவாக ஒரு திட வண்ண செவ்வகமாகும், மற்றும் வெளிப்படையான பகுதி கருப்பு அல்லது வெள்ளை நிறமாக மாறும் | smask_xref 0 ஆக உள்ளதா என்பதைச் சரிபார்த்து, SMask ஐ ஆல்பா சேனலாக முதன்மைப் படத்தில் இணைக்கவும் | வெளிப்படைத்தன்மையுடன் கூடிய படங்கள் பிரதான படமாகவும் மென்மையான முகமூடியாகவும் தனித்தனியாக சேமிக்கப்படும். பிரதான படத்தை மட்டும் பிரித்தெடுப்பது வெளிப்படைத் தகவலை இழக்கும். |
| பிரித்தெடுக்கப்பட்டது முழு பெரிய படம், மற்றும் அதன் ஒரு பகுதி மட்டுமே பக்கத்தில் காட்டப்படும். | CTM மேட்ரிக்ஸ் மற்றும் /BBox ஐப் படிக்கவும், காட்சிப் பகுதிக்கு ஏற்ப செதுக்கவும் | ஒரே அடிப்படை வரைபடம் பல பக்கங்களால் மீண்டும் பயன்படுத்தப்படலாம், மேலும் ஒவ்வொரு பக்கமும் அதன் பகுதி பகுதியை மட்டுமே காட்டுகிறது. |
| பட நோக்குநிலை தலைகீழானது அல்லது சிதைக்கப்பட்டது | வடிவியல் திருத்தத்திற்கான மேட்ரிக்ஸ் அளவுருக்களைப் படிக்கவும், உரை மற்றும் முகங்களை கைமுறையாக சரிபார்க்கவும் | உருமாற்ற அணி எதிர்மறை அளவிடுதல் அல்லது சீரற்ற உருமாற்றங்களைக் கொண்டிருக்கலாம் |
| பிரித்தெடுத்தல் வெற்றிகரமாக உள்ளது ஆனால் பக்கத்தைப் பார்க்க முடியவில்லை | OCG நிலையை வினவவும் மற்றும் CropBox உடன் ஒப்பிடவும் | படத்தை விருப்ப உள்ளடக்கக் குழு அல்லது செதுக்கும் பகுதிக்கு வெளியே மறைக்கலாம் |
| படம் மங்கலாக அல்லது குறைந்த தெளிவுத்திறனாக உள்ளது | DPI மெட்டாடேட்டாவைப் பதிவுசெய்து, குறைந்த தரம் எனக் குறிக்கவும், தேவைப்பட்டால், மூலக் கோப்புகளை மீண்டும் ஸ்கேன் செய்யவும் | உட்பொதிக்கப்பட்ட அசல் படமே குறைந்த தெளிவுத்திறன் கொண்ட சிறுபடமாக இருக்கலாம் |
அசல் பொருள்களுக்கும் ரெண்டரிங் பைப்லைன்களுக்கும் உள்ள வேறுபாடு
PDF கோப்புகள் ஒரு ஆதாரக் கிடங்கு போல கட்டமைக்கப்பட்டுள்ளன. `Document.extract_image(xref)` இந்த முறை என்னவென்றால், கிடங்கில் இருந்து பாகங்களை அப்படியே வெளியே எடுப்பதாகும். பக்கத்தில் உள்ள காட்சியானது பல செயல்முறைகளை மேற்கொள்ள வேண்டும்: உருமாற்ற அணி (CTM) அளவிடுதல், கிளிப்பிங் பாதை (கிளிப் பாதை) வெட்டுதல், வெளிப்படைத்தன்மை குழு (வெளிப்படைத்தன்மை குழு) கலவை மற்றும் மென்மையான முகமூடி (மென்மையான முகமூடி) மேலடுக்கு.
மிகவும் பொதுவான வேறுபாடு SMask இலிருந்து வருகிறது. ஒரு வெளிப்படைத்தன்மை சேனலைக் கொண்ட பல PNGகள் PDFக்குள் இரண்டு பகுதிகளாகப் பிரிக்கப்பட்டுள்ளன: ஒரு RGB பட ஸ்ட்ரீம் மற்றும் ஒரு தனி கிரே மாஸ்க் ஸ்ட்ரீம். நீங்கள் பிரதான படத்தை மட்டும் பிரித்தெடுத்து, அதனுடன் தொடர்புடைய SMask பொருளை நிராகரித்தால், வெளிப்படைத்தன்மை இல்லாத ஒரு செவ்வகத்தைப் பெறுவீர்கள், மேலும் முதலில் வெளிப்படையான பகுதி கருப்பு அல்லது வெள்ளை நிறமாக மாறும்.
கூடுதலாக, ஒலியளவைச் சேமிப்பதற்காக, ஒரே உயர் தெளிவுத்திறன் கொண்ட அடிப்படை வரைபடம் பல பக்கங்களால் மீண்டும் பயன்படுத்தப்படலாம், மேலும் ஒவ்வொரு பக்கமும் அதன் ஒரு பகுதியை வெவ்வேறு /BBox மற்றும் மெட்ரிக்குகள் மூலம் மட்டுமே காண்பிக்கும். நேரடியாகப் பிரித்தெடுத்தல், பயனர் பார்க்கும் செதுக்கப்பட்ட துண்டுகளைக் காட்டிலும் முழுமையான பெரிய படத்தை உருவாக்கும். இந்த "நீங்கள் பார்ப்பது நீங்கள் பெறுவது அல்ல" என்பது ஒரு பரிமாற்ற வடிவமாக PDF இன் உள்ளார்ந்த பண்பு மற்றும் இது பாகுபடுத்தும் நூலகத்தின் குறைபாடு அல்ல.
கீழே உள்ள அட்டவணை இரண்டு முன்னோக்குகளை ஒப்பிடுகிறது:
📊 முக்கிய ஒப்பீடு
| மாறுபட்ட பரிமாணங்கள் | அசல் பொருளை நேரடியாக பிரித்தெடுக்கவும் | பக்க ரெண்டரிங் முடிவுகள் |
|---|---|---|
| உள்ளடக்கத்தைப் பெறுங்கள் | முக்கிய பட ஓட்டம் போன்ற ஆதாரக் கிடங்கில் உள்ள அசல் பாகங்கள் | தொகுப்பு வழிமுறைகளால் செயலாக்கப்பட்ட பிறகு காட்சி விளைவுகள் |
| வெளிப்படைத்தன்மை | பிரதான படம் மற்றும் SMask தனித்தனியாக சேமிக்கப்படலாம் மற்றும் கைமுறையாக இணைக்கப்பட வேண்டும். | மென்மையான முகமூடிகள் மேலெழுதப்பட்டு, வெளிப்படையான பகுதிகள் பொதுவாகக் காட்டப்படும். |
| அளவு மற்றும் வரம்பு | அடிப்படை வரைபடம் முழு அளவில் இருக்கலாம் | CTM, /BBox மற்றும் கிளிப்பிங் பாதைகளால் கட்டுப்படுத்தப்பட்டது |
| மீண்டும் பயன்படுத்தும் சூழ்நிலை | ஒரே அடிப்படை வரைபடம் பல பக்கங்களால் பகிரப்படலாம் | ஒவ்வொரு பக்கமும் அதன் சொந்த பகுதியை மட்டுமே வழங்குகிறது |
செயற்கை சோதனை சூழல் மற்றும் எல்லை வழக்கு செயலாக்கம்
வெளிப்புற கோப்புகளை நம்பாமல் பிரித்தெடுத்தல் தர்க்கத்தை சரிபார்க்க, SMask கொண்ட செயற்கை PDF உருவாக்கப்பட வேண்டும். நினைவகத்தில் ஒரு சோதனை ஆவணத்தை உருவாக்க பின்வரும் குறியீடு PyMuPDF ஐப் பயன்படுத்துகிறது, இதில் படப் பொருள் ஒரு சுயாதீனமான மென்மையான முகமூடியைக் கொண்டுள்ளது, "ஐகான் ஒரு வெளிப்படையான பின்னணியைக் கொண்டுள்ளது, ஆனால் அடிப்படை அடுக்கு ஒரு தனி ஸ்ட்ரீமில் சேமிக்கப்படும்" ஒரு உண்மையான காட்சியில் நிலைமையை உருவகப்படுத்துகிறது.
from io import BytesIO
from PIL import Image
import pymupdf
im = Image.new("RGBA", (16, 16), (255, 0, 0, 128))
raw = BytesIO()
im.save(raw, format="PNG")
with pymupdf.open() as doc:
page = doc.new_page(width=100, height=100)
page.insert_image(pymupdf.Rect(10, 10, 70, 70), stream=raw.getvalue())
images = page.get_images(full=True)
assert len(images) == 1
xref, smask = images[0][:2]
assert xref > 0 and smask > 0
assert doc.extract_image(xref)["width"] == 16
assert doc.extract_image(smask)["image"]
சரியான வெளியீட்டு எதிர்பார்ப்பு: படம் SMask உடன் தொடர்புடையது என்பதை நிரல் அடையாளம் கண்டு, முக்கிய படத் தரவை வெற்றிகரமாகப் பிரித்தெடுக்க வேண்டும்.
குறியீடு முற்றிலும் சுயமாக உள்ளது மற்றும் வெளிப்புற உள்ளீட்டு கோப்புகள் தேவையில்லை. இது நினைவகத்தில் SMask உடன் PDF ஐ ஒருங்கிணைக்கிறது, பின்னர் பிரித்தெடுத்தல் தர்க்கம் முகமூடி சங்கத்தை சரியாக அங்கீகரிக்கிறது என்பதை சரிபார்க்கிறது. குறியீட்டில் இரண்டு முக்கிய வலியுறுத்தல்கள் உள்ளன: ஒன்று பிரித்தெடுக்கப்பட்ட தரவின் ஒருமைப்பாட்டை சரிபார்க்கிறது மற்றும் மற்றொன்று SMask தொடர்புடைய மாநிலத்தின் விழிப்புணர்வை சரிபார்க்கிறது.
இந்த குறியீடு மெட்டாடேட்டா அளவில் ஒருமைப்பாடு சரிபார்ப்பில் கவனம் செலுத்துகிறது. உண்மையான தயாரிப்பில், smask_xref != 0 பயன்படுத்தப்பட்டால், doc.extract_image(smask_xref) முடிவை ஆல்பா சேனலாக பிரதான படத்தில் ஒட்டுவதற்கு தலையணை போன்ற நூலகங்களைப் பயன்படுத்த வேண்டும். இரண்டு வலியுறுத்தல்களும் முறையே "தரவைப் பிரித்தெடுக்க முடியும்" மற்றும் "முகமூடி சங்கம் தெரியும்" ஆகிய இரண்டு முக்கிய ஒப்பந்தங்களை உள்ளடக்கியது, இது வெற்று ஆவணங்கள் அல்லது API மாறும்போது தவறான வெற்றிகளைத் தடுக்கலாம்.
பிரித்தெடுத்தல் முடிவு ஏற்றுக்கொள்ளல் மற்றும் கைமுறை மதிப்பாய்வு எல்லைகள்
தானியங்கு பிரித்தெடுத்தல் காட்சி உறுதிப்படுத்தலை முழுமையாக மாற்ற முடியாது. பின்வரும் அட்டவணை பொதுவான முரண்பாடுகள், கையாளும் உத்திகள் மற்றும் மனிதர்களின் தீர்ப்பிற்கு விடப்பட வேண்டிய சூழ்நிலைகளை சுருக்கமாகக் கூறுகிறது.
| நிகழ்வுகளைக் கவனியுங்கள் | சாத்தியமான காரணங்கள் | தானியங்கு செயலாக்க முடிவுகள் | கைமுறை மதிப்பாய்வு தூண்டுதல் நிபந்தனைகள் |
|---|---|---|---|
| படம் முழுவதும் கருப்பு அல்லது வெள்ளை | SMask ஒரு முழுமையான படமாக பிரித்தெடுக்கப்பட்டது; கலர் ஸ்பேஸ் டிகோடிங் தோல்வியடைந்தது | SMask சங்கத்தை சரிபார்க்கவும்; ஃபால்பேக் வண்ண இடத்தை முயற்சிக்கவும் | மாற்றியமைத்த பிறகும் உள்ளடக்கத்தை அடையாளம் காண முடியாது; ஸ்பாட் நிறங்கள் அல்லது சாதனம் தொடர்பான நிறங்கள் இதில் அடங்கும் |
| படத்தின் நோக்குநிலை தலைகீழானது அல்லது நீட்டிக்கப்பட்டது | CTM மேட்ரிக்ஸில் எதிர்மறை அளவிடுதல் அல்லது சீரற்ற மாற்றம் உள்ளது | வடிவியல் திருத்தத்திற்கான மேட்ரிக்ஸ் அளவுருக்களைப் படிக்கவும் | திருத்தத்திற்குப் பிறகு உரை அல்லது முகங்கள் வெளிப்படையாக சிதைக்கப்படுகின்றன; சிக்கலான திசையன் கிளிப்பிங் பாதை |
| பல சிறிய படங்கள் இணைந்து ஒரு பெரிய படமாக மாறும் | டைலிங் பேட்டர்ன் அல்லது கோடிட்ட சேமிப்பு | BBox ஆயத்தொகுப்புகளின்படி வெட்டு அல்லது பிரிக்கவும் | பிளவு இடைவெளி வெளிப்படையானது; தர்க்கரீதியாக அது ஒரு சுயாதீனமான சொற்பொருள் அலகு இருக்க வேண்டும் |
| பிரித்தெடுத்தல் வெற்றிகரமாக உள்ளது ஆனால் பக்கம் தெரியவில்லை | OCG ஆல் மறைக்கப்பட்டது (விரும்பினால் உள்ளடக்க குழு); பயிர் பகுதிக்கு வெளியே | வினவல் OCG நிலை வடிகட்டி; CropBox ஐ ஒப்பிடுக | உள்ளமைக்கப்பட்ட OCMD போன்ற சிக்கலான அடுக்கு தர்க்கம்; மாறும் வடிவ புலங்கள் |
| மிகக் குறைந்த தெளிவுத்திறன் அல்லது மங்கலானது | அசல் உட்பொதியானது குறைந்த-வரையறை சிறுபடமாகும் | டிபிஐ மெட்டாடேட்டாவை பதிவு செய்யவும், தரம் குறைந்ததாகக் குறிக்கவும் | முக்கிய கிராபிக்ஸ் அல்லது உரை தெளிவின்மை காரணமாக படிக்க முடியாது; மூல ஆவணத்தை மீண்டும் ஸ்கேன் செய்ய வேண்டும். |
"குறியீடு விளக்கக்காட்சி" என்பது API அழைப்புகள் மற்றும் தரவு ஓட்டங்களின் இணைப்பை மட்டுமே சரிபார்க்கிறது என்பதை கவனத்தில் கொள்ள வேண்டும், மேலும் முடிவில் இருந்து இறுதி விளைவு தரநிலையில் உள்ளது என்று அர்த்தம் இல்லை. OCG உள்ளமைக்கப்பட்ட லாஜிக், தனிப்பயன் ஷேடர்கள் அல்லது மறைகுறியாக்கப்பட்ட ஆவணங்களை எதிர்கொள்ளும் போது, ஸ்கிரிப்ட் வெளியீடு குறிப்புக்காக மட்டுமே மற்றும் ஒரு PDF ரீடரால் உண்மையான ரெண்டரிங்கிற்கு எதிராக ஏற்றுக்கொள்ளப்பட வேண்டும்.
🎯 எந்த முறை உங்களுக்கு ஏற்றது?
நீங்கள் வெளிப்படைத்தன்மை விளைவைப் பாதுகாக்க வேண்டும் என்றால்
முதலில் SMask உள்ளதா என்பதைச் சரிபார்த்து, அதை ஆல்பா சேனலில் இணைத்து, பின்னர் செயலாக்கத்தைச் செய்யவும்.
பக்கத்தில் உள்ள பகுதி படம் மட்டுமே உங்களுக்குத் தேவைப்பட்டால்
CTM மற்றும் /BBox ஐப் படித்து, அடிப்படைப் படத்தை நேரடியாகச் சேமிப்பதற்குப் பதிலாக காட்சிப் பகுதிக்கு ஏற்ப செதுக்கவும்.
உங்கள் படம் ஸ்கேன் அல்லது குறைந்த வரையறை உட்பொதிக்கப்பட்டிருந்தால்
முதலில் DPI மெட்டாடேட்டாவைப் பதிவுசெய்து தரத்தைக் குறிக்கவும். முக்கிய உள்ளடக்கம் தெளிவாக இல்லை என்றால், மூலக் கோப்பிற்குச் சென்று மீண்டும் ஸ்கேன் செய்யவும்.
ஆவணத்தில் அடுக்குகள், குறியாக்கம் அல்லது சிக்கலான செதுக்குதல் இருந்தால்
ஸ்கிரிப்ட் வெளியீட்டை பூர்வாங்க முடிவாகக் கருதுங்கள், மேலும் PDF ரீடரில் இறுதி ரெண்டரிங் விளைவு மேலோங்கும்.
❓ அடிக்கடி கேட்கப்படும் கேள்விகள் (FAQ)
1. பிரித்தெடுக்கப்பட்ட படத்தின் வெளிப்படையான பகுதி ஏன் கருப்பு நிறமாக மாறுகிறது?
பொதுவான காரணம் என்னவென்றால், வெளிப்படைத்தன்மை தகவல் SMask இல் சேமிக்கப்படுகிறது, மேலும் முகமூடியை இணைக்காமல் முக்கிய படம் மட்டுமே பிரித்தெடுக்கப்படுகிறது.
2. பிரித்தெடுக்கப்பட்ட படம் நீங்கள் பக்கத்தில் பார்ப்பதை விடப் பெரியதாக உள்ளது. என்ன நடக்கிறது?
ஒரே அடிப்படை வரைபடம் பல பக்கங்களால் மீண்டும் பயன்படுத்தப்படலாம். ஒவ்வொரு பக்கமும் அதன் ஒரு பகுதியை மட்டுமே /BBox மற்றும் மேட்ரிக்ஸ் மூலம் காண்பிக்கும். நேரடி பிரித்தெடுத்தல் முழுமையான அடிப்படை வரைபடத்தை ஏற்படுத்தும்.
3. குறியீடு இயங்கும். பிரித்தெடுக்கப்பட்ட முடிவுகளை நேரடியாகப் பயன்படுத்தலாம் என்று அர்த்தமா?
முடியாது. குறியீட்டு விளக்கமானது API அழைப்புகள் மற்றும் தரவு ஓட்டங்களின் இணைப்பை மட்டுமே சரிபார்க்கிறது, மேலும் வாசகரின் உண்மையான ரெண்டரிங் முடிவுகள் இறுதி ஏற்றுக்கொள்ளலுக்குப் பயன்படுத்தப்பட வேண்டும்.
4. பிரித்தெடுத்தல் வெற்றிகரமாக உள்ளது, ஆனால் படத்தை பக்கத்தில் பார்க்க முடியாது. காரணம் என்னவாக இருக்கலாம்?
படத்தை விருப்ப உள்ளடக்கக் குழு (OCG) அல்லது செதுக்கும் பகுதிக்கு வெளியே மறைக்கலாம். OCG நிலையை வினவலாம் மற்றும் CropBox உடன் ஒப்பிடலாம்.
📝 சுருக்கம்
PDF இல் உள்ள அசல் படப் பொருள் மற்றும் பக்கக் காட்சி விளைவு இரண்டு நிலைகள் ஆகும், மேலும் அவற்றுக்கிடையேயான உறவைப் பிரித்தெடுப்பதற்கு முன் தெளிவுபடுத்த வேண்டும். ஸ்மாஸ்க், மேட்ரிக்ஸ் மற்றும் க்ராப்பிங் தகவல்களை ஒன்றாகச் செயலாக்கி, ரெண்டரிங் முடிவுகளை ஏற்றுக்கொள்வதற்குப் பயன்படுத்தவும், இதனால் முடிவுகள் நம்பகமானதாக இருக்கும்.
இப்போது முயற்சிக்கவும்: அசல் தளவமைப்பைத் தக்கவைத்து, மொழிபெயர்ப்பைத் தொடங்க ஆவணத்தைப் பதிவேற்றவும்


