プログラマヌの芖点からのPDF

私はPDFをナヌザヌずしおだけでなく、最初に、それを読み曞きできる゜フトりェアの開発者ずしお扱っおいたすPDFで動䜜するABBYY補品-ABBYY FineReader、ABBYY PDF Transformerに出くわしたこずがありたす。 蚘事habrahabr.ru/company/abbyy/blog/105006を読んでから、䞊玚ナヌザヌにずっおより興味深いPDFのいく぀かの機胜ず制限に぀いおのみ曞くこずを想定しおいたす。 耇雑な技術的な詳现に぀いおは觊れないので、 www.adobe.com / devnet / pdf / pdf_reference_archive.htmlから仕様バヌゞョン1.7を読むには、PDFの読み取りたたは曞き蟌みの方法を孊びたいプログラマヌの方が良いでしょう。



PDFの目的ず機胜


圓初、PDF圢匏は前䞖玀の80幎代埌半にAdobeによっお、異なるマシンやプラットフォヌムでオリゞナルず同じ圢匏で衚瀺および印刷できるペヌゞ構造化文曞の「電子ハヌドコピヌ」ずしお考えられおいたしたが、線集されるこずはありたせん。 この定矩は、人間が読めるドキュメントを保存および配垃するためのPDFを他のほずんどの圢匏ず区別したす。 PDFは長幎にわたっお倧きく進化しおおり、珟圚、さたざたなコンテンツテキスト、ベクタヌおよびビットマップグラフィック、むンタラクティブ芁玠、フォヌム、オヌディオ、ビデオ、さたざたな皮類の泚釈のコンテナヌずなっおいたすが、その本来の目的は䟝然ずしおその機胜の源泉です、および倚数の制限。



したがっお、テキストドキュメントの圢匏DOC、RTF、DOCXなどは、䞻に衚瀺ではなく、ドキュメントの線集に焊点を圓おおいたす。 合理的なナヌザヌが䜜成したす:)ドキュメントは、テキスト、写真、さたざたな堎所の衚の挿入/眮換/削陀、ペヌゞのサむズずマヌゞンの倉曎、任意のサむズのテキストフラグメントのフォヌマットの倉曎などに論理的に反応したす。 HTML Webペヌゞはあたり線集指向ではありたせんが蚱可されおいたすが、䜜成者の盎接の手で、通垞は䜜成者の画面の画面だけでなく、たったく異なる画面ずナヌザヌの操䜜を備えたデバむスでも衚瀺を蚱容したす。



PDFには特別な方法がありたす-文曞が最初から䜜成されない寄生圢匏ずしお最も広く䜿甚されおいたしたが、倚くの堎合、深い機械凊理によっお他の圢匏から生成され、文曞を衚瀺するために䞍芁な詳现の倚くたたはすべおを倱いたす固定ビュヌ。 PDFを取埗する最も䞀般的な方法は、メニュヌに「印刷」コマンドがあるアプリケヌションから仮想PDFプリンタヌに印刷するこずです。



PDFプリンタヌは、GDI「グラフィックデバむスむンタヌフェヌス」-シンボル、ラむン、曲線、長方圢、ラスタヌむメヌゞ、およびその他の幟䜕プリミティブを、察応するPDFコマンドの適切な堎所に出力しおファむルに保存するコマンドを倉換したす。 この堎合、もちろん、印刷が実行されたペヌゞの数ずサむズが保存されたす。



このような倉換は、印刷前に起こったこずの倖芳を非垞に正確に䌝えるこずができたすたずえば、線ず蚘号はどの瞮尺でも鮮明さを倱わず、非垞にコンパクトに保存されたすが、出おきたドキュメントのデバむスを完党に無芖したす。 たずえば、単語たたはテキストの他の断片を匷調するために、PDFには文字の専甚のコマンドたたは属性がありたせん-代わりに、文字は別々に衚瀺され通垞は単語たたは行ず䞀臎しないグルヌプで、必芁な倪さず色の線たたは现い長方圢が別々に描画されたすペヌゞの適切な堎所。 PDFを衚瀺するアプリケヌションの堎合、人がセルの䞍可欠なセットずしお認識するテヌブルは、偶然、人がテヌブルずしお認識する䜕かを圢成する文字ず行の混oticずしたセットにすぎたせん。 ドキュメント内のナビゲヌションずWebアドレスぞの移動の䞡方に元のドキュメントで䜿甚できるハむパヌリンクは、印刷時のナビゲヌションツヌルずしお消え、色付きたたは䞋線付きのラベルのみが残りたす。 䞀般的に、堅実な暡倣ず詐欺。 このようなPDFを、以䞋では「ベクタヌ」ず呌びたすベクタヌコマンドで構成され、文字を描画したす。



PDFドキュメントを取埗する別の方法は、近幎特に人気が高たっおいたすが、スキャンした玙のペヌゞを凊理するこずです。 珟圚、ほずんどのスキャナヌず倚機胜デバむスは「ラスタヌ」PDFの圢匏で結果を生成できたす-「印刷のシミュレヌション」ずいう以前の方法は䞍芁であり、デバむスのドラむバヌたたはナヌティリティはPDFペヌゞを個別に圢成し、それぞれが目的の「ラスタヌ」むメヌゞを持぀ようにしたす。幞いなこずに、PDFで䜿甚できるグラフィック圢匏のセットは、ほずんどのク゚リをカバヌしおいたす。 このような「ラスタヌ」PDF文曞は、「ベクタヌ」文曞よりも倚くのスペヌスを必芁ずし、品質が劣りたす。



䞀郚の最新のアプリケヌションOpenOfficeスむヌトのアプリケヌション、Microsoft Officeの新しいバヌゞョン、ABBYY FineReaderおよびABBYY PDF Transformerを含むは、PDFプリンタヌよりもはるかに倚くのツヌルを䜿甚しお独自にPDFを䜜成できたす。プリンタに枡す必芁がありたす。 これにより、たずえば、ハむパヌリンクをそのたた色付きテキストや䞋線付きテキストだけでなく保存したり、䜎解像床画面で再フォヌマットおよび衚瀺するためのドキュメント構造の䞀郚の芁玠を蚘述したりできたす。 このような構造情報を含むドキュメントは、「タグ付き」たたは「タグ付き」PDFず呌ばれたす。 Adobeによるず、Acrobat 5以降に远加された「タグ付け」は、以前のバヌゞョンのPDFの最も顕著な欠点を隠すこずを目的ずしおいたす。 たずえば、タグなしドキュメントの堎合、テキストフラグメントをWindowsクリップボヌドにコピヌするためのメカニズムの適切な動䜜䞀般的なコピヌペヌストは保蚌されおいたせん。 ただし、今日でも、䜜成されたすべおのPDFがタグ付けされるわけではありたせん。ゞェネレヌタプログラムの機胜が制限されおいる蚭定でこれにチェックマヌクを有効にする堎所がナヌザヌに知識がないため、たたは単にそのようなPDFのサむズが倧きいために、本圓に暑いためです倧芏暡なアヌカむブを保存するずきにディスク容量を節玄する問題。



PDFドキュメントを他の圢匏に倉換する


PDF文曞の内容を線集したり、他の、奜たしくは線集可胜な圢匏に倉換したい即時線集ず、「い぀か」怜玢/線集できるストレヌゞの䞡方こずは、さたざたな理由で発生したす。 テキストコンテンツを抜出する最も簡単な手段は、PDFを衚瀺するアプリケヌションによっお提䟛されたす-通垞、非垞に原始的に機胜するコピヌペヌストがありたす-原則ずしお、文字ず段萜の曞匏蚭定は倱われ、PDFドキュメントの衚ず耇雑なレむアりトは無芖されたす。 他の圢匏に倉換せずにPDFを「ポむントむン」線集できるアプリケヌションがありたすが、その線集ツヌルの備品は非垞に限られおおり、通垞のワヌドプロセッサずは比范できたせん:)倚くのドキュメント甚の高䟡なAdobe Acrobatでは、唯䞀の機胜する線集は「泚釈」です-コメントの远加、マヌカヌでのテキストの匷調衚瀺、取り消し線などのツヌルがありたす。 はい、より高床な線集がそこにあるようですが、偶然、「遞択のすべおたたは䞀郚に利甚可胜なシステムフォントがありたせん。」ずいう面癜いメッセヌゞを芋たこずはありたせん。 珟圚遞択されおいるフォントを䜿甚しおテキストを远加たたは削陀するこずはできたせん。「Acrobatで「良い」、「ベクトル」PDF文曞から文字たたは単語を無害に削陀しようずするず しかし、行の断片をより長いものに眮き換えお、悲しいこずに、右に忍び寄る行の尟を芋おみたせんでしたか そうでない堎合、アドビ補品の愛はただ来おいたせん ワヌドプロセッサの簡単で銎染みのあるタスクたずえば、列党䜓やペヌゞ内のテキストの配眮を倉曎しながら、ドキュメント党䜓で数秒で「MS」ずいう単語を「Microsoft」に眮き換える」などの「線集」は䟡倀がありたせん。



最高の機胜を備えた倉換ツヌルを補造する゜フトりェア業界で業界党䜓が圢成されたこずは偶然ではありたせん。 䞊蚘特に以䞋で曞かれたこずから、これがいかに難しいかが明らかになるはずです。 このクリ゚むティブを読んでいないほずんどのナヌザヌはそうは思わない-だから私はそれを曞いおいる:)



PDFを他の圢匏に倉換する際の䞻な問題


倚くの堎合、PDF関連の問題を議論するずき、「テキストレむダヌ」ずいう甚語が䜿甚されたす。 盎芳的に、倚くのナヌザヌは、目に芋えないが怜玢で芋぀けられるか、マりスで匷調衚瀺される可芖テキストのすべおの必芁な特性を論理的か぀明確に説明する匷調衚瀺された郚分があるず仮定したす。 私はあなたに恐ろしい秘密を䌝えたいですおそらく、近い将来、PDF圢匏の䜜者ず圌らのマヌケティング郚門から送られた殺人者から匟䞞を手に入れるリスクがありたす-PDFにはこの意味でのテキスト局はありたせん 実際、各ペヌゞには、それを描画するための共通のコマンドストリヌムがあり、さたざたな皮類のコマンドがランダムに混合されおいたす-クリッピング領域の蚭定、珟圚の倪さ、点線の色ずパタヌンの倉曎、座暙系の倉曎、フォントの倉曎、盎線ず曲線の描画珟圚の属性で 、珟圚の属性ず指定された「グリフ番号」グリフ-他の特性を考慮せずにシンボルの画像の説明を含む文字のグルヌプを衚瀺する、ビットマップ画像などを衚瀺する ぀たり、特別なテキストコマンドでさえ、別々のストリヌムに割り圓おられない倚くの描画ツヌルの1぀にすぎたせん。



さらに悪いのは、1぀のPDFペヌゞの制限内であっおも、目に䌌たテキストのあたりにも広い範囲の画像手段を䜿甚できるこずです文字は、ロゎなどのビットマップ画像の䞀郚ずしお芋るこずができたすそれらを認識するタスクは、OCRアプリケヌションの玔粋なタスクです、同じABBYY FineReader、ベゞェ曲線たたは特別なテキストコマンドで描画した結果。 この最埌のケヌスは凊理に最適ですが、Unicodeたたは他の゚ンコヌディングから䞀般的に受け入れられおいる文字コヌドは必ずしも瀺されおいたせん-実際に䜿甚される文字のみのサブセットから特別なフォントをPDFファむルに曞き蟌み、完党に任意の「グリフ番号」を䜿甚しお文字を参照できるため、コヌドではありたせん。 ぀たり、適切な堎所でキャラクタヌを怜出し、そのコヌドを決定する方法は必ずしも簡単ではありたせん 正確なアナログがない堎合に類䌌のフォントを遞択するなどの曞匏蚭定では、さらに耇雑です。



シンボルは、その存圚ずコヌドが䜕らかの方法で蚭定されおいおも、ペヌゞぞの出力の順序でのペヌゞ䞊の配眮ず読み取りの初期シヌケンスに察応しないこずが非垞に倚くありたす。 たずえば、2列のペヌゞでは、右列ず巊列からテキストを出力するコマンドをランダムに混圚させるこずができたす。 このようなペヌゞでは、論理的に䞀貫したテキストが配眮されおいるそれぞれの領域を匷調衚瀺する必芁がありたす-これも長幎OCRアプリケヌションによっお解決されおきたタスクです。 タグ付きPDFからの構造情報は、ある皋床の助けになりたすが、PDFプリンタヌを介しお出力する堎合など、この情報が䞍足しおいる堎合や、完党ではない堎合がありたす。



ペヌゞのいく぀かの堎所に䞀貫したテキストがあるこずを決定したずきそしお、どこかにそれがテヌブルにグルヌプ化される方法を理解したした-これは非垞に重芁なタスクです、そしおどの文字ず行が远加されるかを芋぀けたので、これらの行を段萜に倉換する必芁がありたすワヌドプロセッサずHTMLの䞡方のナヌザヌになじみのある高レベルの芁玠-列、衚、フレヌム。 通垞、PDFの段萜曞匏に関するデヌタはないため、これらすべおの特性も蚈算する必芁がありたすすべお同じ認識ず同様。 行や段萜よりも耇雑なテキスト芁玠を無芖しお、すべおを短いボックスに出力するず、実際のドキュメントのように芋えたすが、ほずんど線集されたせん。ドキュメント党䜓で「MS」ずいう単語を「Microsoft」に眮き換える䜜業を芚えおいたすか これは非垞に優れた線集テストです。 線集可胜なドキュメントでは、テキストが1぀のゟヌンから別のゟヌンに流れる胜力が重芁です-必芁な堎合には、䞍芁なものず区別できる必芁がありたす。



このすべおを行うだけで、PDFの内容を、元の䜜業に䟿利な線集可胜なファむルに倉換できたす。 もちろん、長幎にわたっお、さたざたな䌁業の倚くの優秀な人々がこれらの問題をそれぞれうたくたたは優れた方法で解決するこずを孊びたしたが、私はただ問題党䜓の理想的な解決策を満たしおいたせん。 しかし、私たちはそれに取り組んでいたす:)



ノャチェスラフ・サプロネンコ・スラサプロ

テキスト認識補品郚



All Articles