概要

NDL古典籍OCR-Liteを用いたGradio Appを作成しました。

以下でお試しいただけます。

https://huggingface.co/spaces/nakamura196/ndlkotenocr-lite

「NDL古典籍OCR-Lite」ではデスクトップアプリケーションが提供されているため、Gradioのようなウェブアプリがなくても簡単に実行可能な環境が用意されています。

そのため、本ウェブアプリの用途としては、スマホやタブレット等からの利用や、ウェブAPIを介して利用などが考えられます。

作成時の工夫や不具合対応

サブモジュールの利用

本家のndlkotenocr-liteをサブモジュールとして導入しました。

[spuuarbtlmho=d=uhlntedtlp"ksno:dt/le/kngooitcterhn-uolbci.rtc-eolmi/tned"l]-lab/ndlkotenocr-lite.git

そして、ビルド時に以下を実行します。

##gg!ii/ttbissnuu/bbbmmaoosddhuulleeuuppddaattee--irneimtote-recursive

これにより、ビルド時に、本家のndlkotenocr-liteの最新ファイルを利用できるかと思います。

(誤った理解をしている点もあるかもしれません。)

Dockerfileの利用

上記のサブモジュールの利用にあたり、Dockerfileを使ってビルドする方式にしました。

sdkをdockerにすることで、Dockerfileに基づいてビルドされました。

teccspCimoodihtollkneljoo:nceirrek::FTddroo:oN👀o:cuDmkftL:bealrltKrushoeeeetdecnosnefkiiguOrCaRt-iLointereGfreardeinoceApapthttps://huggingface.co/docs/hub/spaces-config-reference

Gradioのバージョン4.44.1の利用

当初のバージョン5.7.1のGradioを使用していましたが、後述するAPI利用の際、以下のエラーが出て利用できませんでした。

ValueError:Couldnotfetchapiinfoforhttps://nakamura196-ndlkotenocr-lite.hf.space/:{"detail":"NotFound"}

そこで、バージョン4.44.1を使用することで、このエラーを回避することができました。

APIの利用

以下、源氏物語(東京大学総合図書館)を使用した例です。

fcrprleroisiaimeumpnnlaitgttg_(renra==_aedpmsiCcaeuollt=l_iih"tcee=/)lnnhpittare(.nen"pddthrliteecitd_tmpif"pscio:tlr/(et/(n'Cahlktiatempnustr:,a/1/h9ia6in-idnfld.eld_klfo.itiletenco.cur--tloiktyeo..hafc..sjppa/ciei/i"f)/genji/TIFF/A00_6587/01/01_0004.tif/full/900,/0/default.jpg'),

以下のように、画像、テキスト、XML、JSONデータを得ることができます。

'{<''p?ci'''rxo{{{{{{{{{miiiimn'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''gmmmvlt[[[iiticbiiticbiiticbiiticbiiticbiiticbiiticbiiticbiiticbiiticigggae444dsesoodsesoodsesoodsesoodsesoodsesoodsesoodsesoodsesoodseson___tvn366'VxTnu'VxTnu'VxTnu'VxTnu'VxTnu'VxTnu'VxTnu'VxTnu'VxTnu'VxTnfhpneet322:etefn:etefn:etefn:etefn:etefn:etefn:etefn:etefn:etefn:etefoeaa/rs,,,r'xidr'xidr'xidr'xidr'xidr'xidr'xidr'xidr'xidr'xi'itmvs'0t:tdi1t:tdi2t:tdi3t:tdi4t:tdi5t:tdi6t:tdi7t:tdi8t:tdi9t:td:gheai:515,ilen,ilen,ilen,ilen,ilen,ilen,ilen,ilen,ilen,ileh''ro363c'ingc'ingc'ingc'ingc'ingc'ingc'ingc'ingc'ingc'in{t::/n[494ancBancBancBancBancBancBancBancBancBanc''f=[]]]leeoleeoleeoleeoleeoleeoleeoleeoleeoleei:''o"{,,]'''x'''x'''x'''x'''x'''x'''x'''x'''x'''mddl1',:::':::':::':::':::':::':::':::':::':::g6eed.b:::::::::_7ffe0o''0''0''0''0''0''0''0''0''0''0w6aar"utt.[tt.[tt.[tt.[tt.[tt.[tt.[tt.[tt.[tt.i,uusnrr8[rr8[rr8[rr8[rr8[rr8[rr8[rr8[rr8[rr8dll/?duu44uu13uu13uu43uu12uu32uu42uu41uu31uu4tttz>iee50ee47ee24ee11ee97ee54ee52ee28ee}5ee4h..5\n''}1''}2''}2''}2''}9''}8''}0''}9'',8''}'jjng,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]:pp3n<B]eepOo111111111,9gg9Cx6666667660''sR'9329220290,}8D:]]]]]]]]],}mA,,,,,,,,,)0T[1A[[['[[[[[[[1S443,33'2221'1dE30741,7'4'28,5'vT3122'29,8,0'98,0>,',',,,,,,,,,,t\,,jn1555555555t\63443443437t9300410202c<]]]]]]]]]]hP,,,,,,,,,,2A1G[[[[[[[[[jE433332221t397307418mI091979776hM,,,,,,,,,0\A0nG1111111110E6666667660N932922029gA]]]]]]]]]nM,,,,,,,,,/ET=[[[[[[[[[/"433332221gd397307418re091979776af,,,,,,,,,daiu555555555ol344344343/t3004102021.]]]]]]]]]4j]]]]]]]]]1p,,,,,,,,,9e0ge\"an2W0IeD0T0He=2"49f0500"c0HbEaI0GfH1Te=f"d697f\64n"1>1\7n4\7ta\6tb<bL7IfN9Ef4T0Y6P7E4=0"4d\9n"4cX1=f"c4b3638"1fY9=/"i1m6a9g"e.WwIeDbTp\H'n=,"29"HEIGHT="365"CON\Fn="0.845"ORDER="0"STRI\NnG="\n"/>\n\t\t<LINETYP'E,=""X="401"Y="169"WIDTH="29"HEIGHT="364"CONF="0.814"ORDER="1"STRING=""/>\n\t\t<LINETYPE=""X="372"Y="163"WIDTH="27"HEIGHT="377"CONF="0.812"ORDER="2"STRING=""/>\n\t\t<LINETYPE=""X="342"Y="162"WIDTH="29"HEIGHT="378"CONF="0.841"ORDER="3"STRING=""/>\n\t\t<LINETYPE=""X="312"Y="169"WIDTH="27"HEIGHT="365"CONF="0.819"ORDER="4"STRING=""/>\n\t\t<LINETYPE=""X="279"Y="162"WIDTH="28"HEIGHT="379"CONF="0.835"ORDER="5"STRING=""/>\n\t\t<LINETYPE=""X="248"Y="162"WIDTH="31"HEIGHT="378"CONF="0.845"ORDER="6"STRING=""/>\n\t\t<LINETYPE=""X="220"Y="170"WIDTH="27"HEIGHT="362"CONF="0.842"ORDER="7"STRING=""/>\n\t\t<LINETYPE=""X="189"Y="162"WIDTH="28"HEIGHT="378"CONF="0.830"ORDER="8"STRING=""/>\n\t\t<LINETYPE=""X="158"Y="169"WIDTH="28"HEIGHT="363"CONF="0.844"ORDER="9"STRING=""/>\n\t</PAGE>\n</OCRDATASET>\n',

開発

リポジトリにdocker-compose.ymlを含めていますので、開発環境の構築や公開環境へのデプロイなど、HuggingFace Spaces以外でもお使いいただけるかと思います。

まとめ

「NDL古典籍OCR-Lite」をOSSとして公開いただいたことに感謝いたします。

Dockerを用いた開発などが不慣れで、不正確な点もあるかもしれませんが、参考になりましたら幸いです。