概要

PDFを対象に、Google Cloud Vision APIを使って、透明テキスト付きPDFを作成する機会がありましたので、備忘録です。

以下、simpleで検索した例です。

背景

今回は単一ページから構成されるPDFを対象とします。

手順

画像の作成

OCRの対象とする画像を作成します。

デフォルトの設定だとボヤけた画像ができてしまったので、解像度を2倍に設定し、また後述するプロセスで、解像度を考慮した位置合わせを実施しています。

以下をインストールします。

PPyiMlulPoDwF
ififi#io#pp##z#mpiimrmrmnudaoaimmpopopptfgpotxggomomoup_eim.rrrPtuPdx===stPtttD_tDo==aIqFp_Fc=fpIvfLjdidpup2iameismofdmdp.tga(tio_fefa0zeg"zmnip_n_g..e.pmaptdeMg.optao.aei#roht=cgttpmtrPhuer_eaPtD=fmtipngyIF=ie_xi(eMmt"tnp(xi.uaq."ztizmopPgd/..[Oxoa.nDemi/o0CmopBgFnop]Ram(y"puep,mt)utn(aetp(#)zts.uiorIptnoiOd.p#mx(fpu)=p"dtmif_ax"pt.#d3)tf0o_0bpyaDttPehIs)(P"DpFng")))

Google Cloud Vision API

出力された画像を対象に、Google Cloud Vision APIを適用します。

{"text{}{}{}A,,,nno"}"""}""}"tb,dlb,db,daoeooeoetuscususin"]can"]cn"]codvrldvrdvrnieieieiieisnrp"nrpnrp"gt{}{}{}{}t:gt{}{}{}{}tgt{}{}{}{}t:Pi,,,iPi,,,iPi,,,ioco"ocooco[lenllenlenys"""""""""ays"""""""""ys"""""""""""xyxyxyxy:"""xyxyxyxy:""xyxyxyxy:::""""""""::""""""""::""""""""::::::::"::::::::"::::::::"{[S{[S{[P11111111a11313212a31515232D45050444m45656141m85050181F12828111p19364629p26647335",220,0l,,,,l,,,,,,ee"PDF...",

出力結果として得られるJSONファイルを./google_ocr.jsonといった名前で保存します。

そして、以下のようにOCR結果を取得します。

j#wtsieoJtxnSht_OrspNoeaps=tephnor(ne=jsssep"Ooo.Cn=n/R_sgpjeoas[oto"ghntl,.eelx_"otoraAc"dnr)(n.foja)tssaotnfi":ons"]

透明テキストの作成

以下のスクリプトにより、PDFに反映します。ポイントとして、「フォントサイズを調整して収まるか確認」する必要がありました。

#r#i#ppefddcOfftCt__Refdd=xoootrPccpsDuua:tvxyxyxyxy#bc#ff#wiFmmgee________booihfeeexrmmmmmmmmonntinn.ttiiaaiiaaxttslnttrinnxxnnxx_eserifop..eicrni=efotrsccne========etzfsnialtsceFortfnvotmmmmxyxyt=an=efbsitesq=iiaa____=ltsirit((ednnxxmmmm=ts調sptezsfo(mt((((iiaae1eia>sae:"u)(e[[[[nnxxfx0zg=k'ttxvvvvitee=-{pet[[[[////t[.0=cux[""""z">i:Tott"xyxyzzzz.dnr1n_sb""""ooooRe0sutp[o]]]]ooooes:eeed1ummmmccr#nf:nfffftrtt_]doooo(i_}p)irrrrxpt'a:n_tetgvvvvmixchPioto)#oiiiinnbulnnnn,"olty]xde"vvvvy(x]eeee_bnt[rrrrmbos"ttttiot[viiiinx0ecccc,_f]reeeeritssssxeti_cciiiimtieffffa,nsx"vvvv,ct]]]]]oh))))yne_tmeranextc),tafnognltes.i"z)e=fontsize,color=(0,0,0,0),render_mode=3,align=1)

結果

以下で公開されているPDFを対象にします。

https://pdfobject.com/pdf/sample.pdf

結果、以下のように透明テキスト付きPDFを作成することができました。

まとめ

特定のページのみOCRが必要な際などに、本記事が参考になれば幸いです。