Google Cloud Vision APIを用いて、単一ページから構成される透明テキスト付きPDFを作成する

概要 PDFを対象に、Google Cloud Vision APIを使って、透明テキスト付きPDFを作成する機会がありましたので、備忘録です。 以下、simpleで検索した例です。 背景 今回は単一ページから構成されるPDFを対象とします。 手順 画像の作成 OCRの対象とする画像を作成します。 デフォルトの設定だとボヤけた画像ができてしまったので、解像度を2倍に設定し、また後述するプロセスで、解像度を考慮した位置合わせを実施しています。 以下をインストールします。 P P y i M l u l P o D w F i f i f i # i o # p p # # z # m p i i m r m r m n u d a o a i m m p o p o p 入 p t 入 f g ペ p o 解 t x g g o m o m o 力 u p 力 _ e ー i m 像 . r r r P t u P d ジ x 度 = = = s t P t t t D _ t D o = を = を a I q F p _ F c 画 = 上 f p I v f L j d i フ d p フ u p 像 2 げ i a m e i s m o ァ f d ァ m d と p . る t g a ( t i o イ _ f イ e f し a 0 た z e g " z m n i ル p _ ル n _ て g め . . e . p m と a p を t d レ e に M g . o p 出 t a 開 o ン . ズ a e i # r o 力 h t き = c ダ g ー t t p m t r P h 、 u リ e ム r _ e a P t D = 単 f m ン t 設 i p n g y I F = 一 i e グ _ 定 x i ( e M m t フ " ペ t n し p ( x i . u a q ァ . " ー z t 、 i z m o p P g d イ / . ジ . [ O x o a . n D e m ル i / を o 0 C m o p B g F n o 読 p ] R a m ( y " p u み e で p , m t ) u t 込 n テ ( a e t p み ( # キ ) z t s . u i ス o r I p t n 最 ト o i O d . p 初 を # m x ( f p u の 抽 ) = p " d t ペ 出 解 m i f _ ー 像 a x " p ジ 度 t . # d を 3 ) t f 選 0 o 単 _ 択 0 b 一 p y ペ a D t ー t P e ジ h I s の ) で ( P レ " D ン p F ダ n フ リ g ァ ン " イ グ ) ル ) ) Google Cloud Vision API 出力された画像を対象に、Google Cloud Vision APIを適用します。 ...

2024年11月2日 · 9 分 · Nakamura

ArchivematicaのMETSファイルの内容を可視化するPythonライブラリ

概要 ArchivematicaのMETSファイルの内容を可視化するPythonライブラリを作成しました。 例えば以下のように、AIPの作成過程で行われた処理(premis:event)の集計結果などを可視化します。 背景 以下の記事で、ArchivematicaのMETSファイルを人間に優しい方法で探索するためのウェブアプリケーションであるMETSFlaskを紹介しました。 今回作成したものは、このMETSFlaskで提供されている機能を、Flask以外からも利用しやすいようにライブラリ化したものです。 リポジトリ 以下で公開しています。README.mdファイルに使用方法を記載しています。 https://github.com/nakamura196/mets_tools GitHub Pagesでもドキュメントを公開しています。 https://nakamura196.github.io/mets_tools/ まとめ ArchivematicaおよびAIPの利用にあたり、参考になりましたら幸いです。

2024年10月31日 · 1 分 · Nakamura

iiif-prezi3を使って、動画に関するIIIF v3マニフェストを作成する

概要 iiif-prezi3を使って、動画に関するIIIF v3マニフェストを作成する機会がありましたので、備忘録です。 https://github.com/iiif-prezi/iiif-prezi3 参考 IIIFマニフェストファイルの例、およびiiif-prezi3を使った実装例は、IIIF Cookbookで公開されています。 以下、動画に関するIIIF v3マニフェストを作成する例です。 https://iiif.io/api/cookbook/recipe/0003-mvm-video/ iiif-prezi3を使った実装例は以下で公開されています。 https://iiif-prezi.github.io/iiif-prezi3/recipes/0003-mvm-video/ f c m c a a a h a h c a c p r o a a n n n w n w a n a r o n n n n n n d n d n n n i m f i v o o o o [ v o v n i f a _ _ = _ " a _ a t i g e s b p = b w s p s ( i . s o a { o i . a . m i c t = d g A " d d s g a a f o y e n h y t e e d n _ n = m n e . h t . d i p f a = = o i s " _ a _ f r i M n t g e ] h d i e e g a i R A a h t w d t s z s n f e n t t _ = d _ e t i [ i e s n i " h ( i m . 3 ' f s o o o : w 6 * t ( j h e t u t n d 4 * e a s i e s . r a ( 3 ( 0 h m n o m l t m c t i m b t 6 * w ( n n p p ( a e i d o o a 0 * d a o ( o e i k I o = t d r , h ) n _ i r r d e t n " i y g w n p n t s = _ e P h v = e " d o a d . " c m a t a a t w ) ) g e M a h a ( g t t n = i e n a u t n i t f e p i n c d ) t n t t v d y o ( s o o a t = i o p a = p r i : n _ n h 2 f _ s s " e m d / = b v " ) e f : ( h = a = / " o a : ) s i / i t " t " i p d s t e / d t V = h i a y . 4 , l i = p i " t i i , i 8 d i " s d v t f n d 0 A s i h : e i p . t ) , n . f t / d s i i n A . t " e : n " o u i p f , o g d t t o s i a " u a o / : x m i p , r t L a / t p i i a i a p / u 4 i / t o n i i r " f c i n g / i e ) . o o P ' c i s i o n a ] o f . o k " g . o . i / b : e a k i i a o , u b o i p o 5 t o f i k 7 A o a . / / 2 n _ k p i c r . n l / i o e 0 o a r o c 3 t n e c v k i 4 a g c o i b p } t i o d o e i = p k e o / o e b o k 0 n " / o / 0 , e 0 i r 0 n 0 k n e 3 R " 0 / d c - e 3 r i i m s - e a p v o m c n e m u v i a / - r m p / 0 v c - e l 0 i e v / u 0 d I i 0 n 3 e t d 0 c - o e e 0 h m / m o 3 r c , / - o m a m m o - n c a v m v v o n m _ i a n i - m d s f f v a e i e i n p g s d n / a t e e c g . o r a e j / s n / s c / a o a h a n n n i s n " v g / o , a h p t s / a a l " l g t a ) u e i b n " o e c ) n l h " = r , " o V o i m d _ e m o a n E n x e a r m s p _ l 1 e 0 2 3 4 " k ) b . m p 4 " , まとめ 他にも多くのサンプルや実装例が公開されています。参考になりましたら幸いです。 ...

2024年10月8日 · 5 分 · Nakamura

pythonを使ってcvatのデータを操作する

概要 pythonを使ってcvatのデータを操作する機会がありましたので、備忘録です。 セットアップ 今回はDockerを使って起動します。 g c d i d o t c c k c v e l a r o t n c e o m h p t o t s p e s : u / p / g - i d t h u b . c o m / c v a t - a i / c v a t - d e p t h 1 アカウントの作成 http://localhost:8080にアクセスして、アカウントを作成します。 ...

2024年10月4日 · 20 分 · Nakamura

GUIE(Google Universal Image Embedding)の学習済みモデルを使用して類似画像検索を行う

概要 GUIE(Google Universal Image Embedding)の学習済みモデルを使用して類似画像検索を行うサンプルプログラムを作成しました。以下からノートブックにアクセスいただけます。 https://colab.research.google.com/github/nakamura196/000_tools/blob/main/guie_sample.ipynb 参考 以下のノートブックの出力ファイルであるモデルを利用しています。 https://www.kaggle.com/code/francischen1991/tf-baseline-v2-submission 使用上の注意 Kaggleのアカウント ノートブックの実行には、Kaggleのアカウントが必要です。Kaggle API Keyを取得して、それらをシークレットに登録します。 以下が表示された場合には、「アクセスを許可」を押してください。 また、Kaggleからモデルをダウンロードする部分で、一定時間待つ必要があります。 実行結果 以下のように、類似画像検索の結果が表示されます。 ジャパンサーチで公開されているギャラリー「祇園祭」の一部画像を利用しています。 https://jpsearch.go.jp/gallery/ndl-kbjG03kKgjp メモ torchvisionのバージョン Google Colabにデフォルトでインストールされているtorchvisionではうまく動作せず、バージョンを0.12.0あたりまで下げる必要がありました。 まとめ 今後、Elasticsearchの近似最近傍探索を使って、今回作成したベクトルに対する検索を行いたいと思います。 https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html 参考になりましたら幸いです。

2024年8月27日 · 1 分 · Nakamura

画像ファイルに対してGoogle Cloud Visionを適用して、IIIFマニフェストおよびTEI/XMLファイルを作成する

概要 画像ファイルに対してGoogle Cloud Visionを適用して、IIIFマニフェストおよびTEI/XMLファイルを作成するライブラリを作成しました。 https://github.com/nakamura196/iiif_tei_py 本ライブラリの使用方法を説明します。 使用方法 以下で使い方などを確認できます。 https://nakamura196.github.io/iiif_tei_py/ ライブラリのインストール GitHubのリポジトリから、ライブラリをインストールします。 p i p i n s t a l l h t t p s : / / g i t h u b . c o m / n a k a m u r a 1 9 6 / i i i f _ t e i _ p y GCのサービスアカウントの作成 以下の記事などを参考に、GC(Google Cloud)のサービスアカウントキー(JSONファイル)をダウンロードします。 ...

2024年8月8日 · 37 分 · Nakamura

Pythonを使ってRDFデータをDydraに登録する

概要 Pythonを使ってRDFデータをDydraに登録するライブラリを作成しました。 https://github.com/nakamura196/dydra-py 中途半端な実装が含まれますが、お役に立つ場面があれば幸いです。 工夫 インポートは以下で行なっています。 https://github.com/nakamura196/dydra-py/blob/main/dydra_py/api.py#L55 以下のように、SPARQLのINSERT DATA オペレーションを使用しています。 d e f i " I A " h } f p f m " m r " e i r o p " p g " a l i r o o s d e n r r : f f g e " " s t f # g g n i e i r i e t t i o r r A C ( i r r t f l f e f l _ s l r a s u o = " l R a a _ s s s b e m p t n N e D p p d g e v p r e y R _ a h = h t s u F h h a r q I { } " : q I G } } " e p o e p : p _ D p t _ o e e m i フ . t a u N n } " u N R } } " r r n s r r f F a u { r n l b n ァ = p a p e S t " e S A " b i s p i i i t ( r i t f e イ a h r E _ r E P o n e o n n l d h s i z - . r t ル r r = _ y R d y R H { s t n t t e a t a T _ q の d s u T a T n e ( = s ( ( ( t ( r ( t y c o d 読 f e g r = t = < t : q e " f s a s ) s i p h f m み l ( r i D a D { _ u r . D " e t : t o e u ( 込 i f a f A } f A g d e e s a E l f r r n " n c f み b i p i " T " T r a r q t t r f r ) T , " : k h i . l h s " A " A a t y u a a r , o : h : _ u l G e . " " p a ) e t o m e o " r n e r , s N { { h } s u s r f T p f a d k s a e o { { _ t s u : i a h f t " p f s ) p f r n u s _ c l e o i B p _ : : h o i e r . c c { e f r o e l f ( r a : i p o e r _ i p m n a i i " ) m l } o d s e p l a a a r c l , a i > s e s s a e t t l e a e t z t f p t h ) r t ( l = e { ( = u o h i o : i f e f ( { s = l n , n t f { o i n o f e l s t o U s n l ( r o l 2 y e f o t R e / e f m r f 0 . o t h I l s _ i a m . 0 i s r t h e f p p l t a e : n t m h e o . a a e ) t n s a a e R f a r t s = d e t t R D p q h ) ' p r u , D D F t i l , ) # n o t s y F h _ - t i e _ g d f e k u f フ ' n d c r r f i e p o ォ ) t . o a a i l g y d r ー , " d p l e r } a m マ ) e h s e a " t a ッ d } _ t ( p , e t ト a u o t e h " = は t { r r o . f フ a r i e g w o ァ = e = . i . h r イ q s N m , e m ル u p o p r a に e o n o ' e t 応 r n e r x ) じ y s , t m d て , e . l a 変 . v ' t 更 h t e , a e e r a x b ' w d t o n i e } s t l r " e ' l s ) = ) = F . b h a e e l a s i d e n e ) s r : e s r ) t e d . D e f a u l t s t o N o n e . 工夫 工夫した点として、サイズが大きいRDFファイルを一度にアップロードした際、プロセスが途中で止まってしまうケースがありました。 ...

2024年7月26日 · 9 分 · Nakamura

vsdxファイルからrdfファイルを作成するライブラリ

概要 vsdxファイルからrdfファイルを作成するライブラリを作成したので、備忘録です。 https://github.com/nakamura196/vsdx-rdf 背景 以下の記事などで、Microsoft Visioを使ってRDFデータを作成する方法を検討しています。 上記の記事で、「本ライブラリについては別の記事で紹介予定です。」に対応する記事となります。 使い方 以下を参考にしてください。 https://nakamura196.github.io/vsdx-rdf/ Google Colab 本ライブラリを試すためのノートブックを用意しました。 https://colab.research.google.com/github/nakamura196/000_tools/blob/main/vsdxファイルからrdfファイルを作成するプログラム.ipynb 実行後、/content/outputにttlファイルや、pngファイルが出力されます。 まとめ 未熟な点が多いかと思いますが、参考になりましたら幸いです。

2024年7月18日 · 1 分 · Nakamura

OAI-PMHリポジトリからPythonでレコードを全件取得する

OAI-PMHリポジトリからPythonでレコードを全件取得するスクリプトです。参考になりましたら幸いです。 i f i # b # p } r # r p p r d # w p p m r m a a e e r r o a h r r p o p エ s O r s 初 q e i o t 全 i i i o m o ン e A a p 回 p n t a デ l n n r r ド _ I m ' ' o リ = a t ー e # f # t i p } r r t t t r t ポ u - s v m s n ク r ( = = タ o o f a e o ( ( e イ r P e e e s エ R e " の T レ r r k r s o " l r q x ン l M = r t t e ス e d S E [ 取 r コ e e t a p t 全 e e u m ト H b a ' ト q _ e T ] 得 u ー r i p # d s n o b m ' o 件 n q e l の = { ' d : = の u r n . e ド e d r a u _ k r s v r n = 取 ( u s . 定 リ : a 準 e e d f : の c e i 他 t m e e e e e s 得 d e t e 義 ' ク t ' r 備 s q i r 処 o n n の a p l n a = r s e E が a s s t h エ ' a 9 e t n o 理 r t t デ . t e _ k b u T 完 t t r t ス L P 7 q ( = g m d i ( ー a i m e { ' m = . 了 a s i e t ト i r 5 u ' s f f タ p o e l : p f し ) m e p の s e 9 e G r r t i i ' も p n n e # t r r ま ) p . s 初 t f 0 s E e e r n e R こ e T t m ' i e o し o E : 回 R i ' t T q q i r e こ n o e ト L o q m た r l / 実 e x s ' . u n r c で d k = n ー i n u s 。 t e / 行 c ' . , p e g o = o 処 ( e t ク s T e t " m c o : g r s ( o r 理 r n r ン t o s r ) R e u r e b e t r t r d 可 e の o i が R k t i e n r d ' t a p e . e 能 c 取 o s な e e s n q t a s c ( s a t s f c I o 得 t い c n . g u T t ' u b e r o p i o D r と . N 場 o ' g ( e r i , r a _ e : o n r : d 次 f o 合 r : e r s e o a s u ( " n d d ) の i n 、 d t e t e n t e r ) , s a . { リ n e ル s t ( s . i _ l e l f i ク d ー ' o b p a l o u , p . l i d エ ( o プ , k a o s i n r p r c ( n e ス ' r を e s n b ' l a e o ' d n ト . 終 n e s E r , , r p n . ( t の / n 了 _ _ e T a a a t / ' i 実 / o e u . r p m r e . f 行 { t l r c y a s e n { / i h e l o . r = d t h / e t t m , n t a p _ ) t { r t o e t . m a r t h } p k n p e u s r e p t ' : e t a n - = a q : t ) / n . r t t p m . / p / _ t a ) o a s u / : w e e m k r ) r w / w l x s y a l w / w e t = o m ) w w . m p . s . w o e a a ) o w p n r c # p . e t a . e o n . m j U n p a t s p R a e r e ) / L r n c x o を c a h t a 出 h r i : i 力 i c v ' v h e e i s s v . . e o o s r r . g g / r O O g A A / I I O / / A 2 2 I . . / 0 0 2 / / . } } 0 r r / e e } s c i u o d m r e p d n t ' t i ) i o : f n i T e o r k ' e ) n . ' t ) e x t

2024年7月14日 · 5 分 · Nakamura

DrupalのREST APIを使って、複数のコンテンツを一括削除する

概要 DrupalのREST APIを使って、複数のコンテンツを一括削除する機会がありましたので、備忘録です。 参考 REST APIを使用せずにコンテンツを一括削除する方法として、以下も参考にしてください。 準備 まず、HTTP Basic AuthenticationモジュールとJSON:APIモジュールを有効化します。 さらに、REST resourcesにおいて、DELETEを有効化します。 /admin/config/services/rest 実行例 以下の自作ライブラリを使用します。 https://github.com/nakamura196/drupal_tools 以下でも処理内容をご確認いただけます。 https://nakamura196.github.io/drupal_tools/ インストール p i p i n s t a l l g i t + h t t p s : / / g i t h u b . c o m / n a k a m u r a 1 9 6 / d r u p a l _ t o o l s .envの準備 D D D R R R U U U P P P A A A L L L _ _ _ U U P R S A L E S = R S h N W t A O t M R p E D : = = / u p / s a e e s x r s a n w m a o p m r l e d e . o r g / d r u p a l 実行 以下のように実行します。 ...

2024年7月14日 · 4 分 · Nakamura

ZoteroのAPIとStreamlitを使ったアプリ開発

概要 ZoteroのAPIとStreamlitを使ったアプリを試作しました。 https://nakamura196-zotero.streamlit.app/ 本記事は、このアプリ開発におけるメモです。 Streamlit 以下の記事がとても参考になりました。 https://qiita.com/sypn/items/80962d84126be4092d3c ZoteroのAPI ZoteroのAPIについて、以下で説明されています。 https://www.zotero.org/support/dev/web_api/v3/start 今回は上記のページで紹介されている以下のライブラリを使用しました。 https://github.com/urschrei/pyzotero APIの利用にあたっては、personal library IDやAPI keyを取得する必要がありますが、READMEのQuickstartの手順に従うと、それらを取得することができました。 以下は、API keyを発行した際の画面です。 Streamlitを用いた開発 以下のリポジトリでソースコードを公開しています。 https://github.com/nakamura196/zotero_streamlit 機密情報 機密情報は、/.streamlit/secrets.tomlというファイルを作成し、そこに記載するようでした。.gitignoreに記載することも忘れないようにしてください。 [ l l a z i i p o b b i t r r _ e a a k r r r e o y y y ] _ _ = i t " d y x = p x " e x x = " x " x u " s e r " そして、以下のように呼び出すことができました。 ...

2024年7月11日 · 7 分 · Nakamura

Content Negotiationを使って、PythonでURIからRDFを取得する

概要 WikidataのエンティティのURIからRDFデータを取得する機会がありましたので、備忘録です。 Content Negotiationを使用しない まず以下のように、headersを空のままリクエストします。 i # u h } # r # i e m r e e f l p U l a S s C s o R d e p h r e r L = e n o e e t p : p t r d n c s e r r f " s i s k p x i i r o h n e i o t n n e r t = g n n t t q t = g s = ( ( u t p { a e t " e h : r i . r e F s e / G e f s e x a t / E q t s t i s W w T u t a p [ l i w e h t o : e k w r s e u n 5 d i . e t s s 0 d w q s r _ e 0 t a i u . e c . 0 o t k e g q o t ] a i s e u d e ) r d t t e e x e e a ( s t t n t t u t = r t a o r = i i . l w e t o t , a 2 v y r h s 0 e g e h 0 i / e s : R n e U a u D n R d c F R t L e c D i r e d F t s s a y = s t f h f a Q e u . r 1 a l m 2 d S a 4 e t t 1 r a 8 s t " ) u s c o d e : " , r e s p o n s e . s t a t u s _ c o d e ) この場合、以下のように、json形式のテキストデータを取得することができます。 ...

2024年6月23日 · 18 分 · Nakamura

iiif-prezi3を試す

概要 IIIF Presentation API 3が普及しつつありますが、その仕様を理解しつつ、JSONファイルを直接作成することが難しく感じるようになりました。 そこで、以下のPythonライブラリを使用してみましたので、備忘録です。 https://github.com/iiif-prezi/iiif-prezi3 以下の記事で紹介した東寺百合文書WEBで公開されているデータのIIIFへの変換にあたり、本ライブラリを使用しています。 読みにくいもので恐縮ですが、ソースコードも以下のリポジトリで公開していますので、参考になりましたら幸いです。 https://github.com/nakamura196/toji_iiif コレクションの作成 以下のようなコードにより、IIIFコレクションを作成できました。 i i c o o w m i o p s i p i l a . t o f l t m h r _ e i l v p ) h ) m ] r h a f t p c d a i r , o , e , i k o . r t = b e o m t g = e p w i e i f e w v e a h d e r i z o " l i i i l p i t l f l d i i t f i n i i i n { = n d d a a d y a o a a i i s " r ( t f 3 o " g e = b g = p b r n t i i = { s o e _ . = r 東 D r s e e s e e m g a f f s s ( p ( p c i 寺 i = e l = e = l a u = _ _ e e o a c r o i g 百 r i l = i l " = t a [ p p l l s t o e n i i 合 e i f s i f T s = g r r f f . h l z f i n 文 c i . e i . e e " e e e . . p , l i i f } 書 t f h l f h x l t = z z r d a e 3 g _ / " i _ o f _ o t f e " i i i o t " c . p s , o p m . p m " . x j 3 3 g c h w t c r e n r e a r e , a t a . . h s . " i o e t = e p t e p t / " K K t _ d ) o n z / " z a t z a t h e e s d i n f i 3 r i g r i g r t y y , i r a . i 3 i 3 e i 3 e i m V V r n s j g . c g . , b . , b l a a } a s s C o h P u H u " l l / m f o [ o l t r t o t , u u i e : n ' l l - o i m i e e i ( ( h l e t v o e o S S i o e e e c o i n p n t t f p n l c t - d , a , r r / a s p t i l e g i i s t u e i o e r e n n e h r r o n f I I g g t ) e s n . t t t ( ( / , _ . ( j " e e l l 3 a a s , m m a a / e s u o ( ( b b c x c t n e e o i i o " l l l s i _ , = = l t = f " " e _ F i A R c o a e t i t k l l t g i = s d r h o T e s i t n r , . b s . u A u " j e i u t , s ) n t i o d o o v n e L n a " n a " l t n , u = g e 2 ' v = ] a s i . l e f a u l u e f I t = . S o s r _ _ e i D l l g E a f h B n . t U g a s G t ) = t , e r l " i s j b e a u " t N i o o n n e ) ) , ) iiif_prezi3.config.configs['helpers.auto_fields.AutoLang'].auto_langにjaを与えることで、labelやmetadataの言語フィールドがjaになりました。 ...

2024年6月19日 · 8 分 · Nakamura

「ARC2によるRDFグラフの視覚化」をPythonで利用する

概要 神崎正英氏が公開する「ARC2によるRDFグラフの視覚化」をPythonで利用させていただく機会がありましたので、備忘録です。 「ARC2によるRDFグラフの視覚化」の公開ページは以下です。 https://www.kanzaki.com/works/2009/pub/graph-draw Turtle、RDF/XML、JSON-LD、TriGもしくはMicrodataで記述したRDFを入力として、可視化結果をpngやsvgファイルで取得することができます。 Pythonでの利用例 i t o # u d } # r # i e m e u r a e f l p x t P l t P s 応 s o t p O a O p 答 r e r u S = " " " " " S o が e p # : o # w t = t T = R r g r q T n P s r s i _ リ " D t t a n リ s N p i p . 応 t r " p ク h { F y y n a ク e G o n r m 答 h e @ a エ t " p p k m エ 画 n t i a を f q p t ス t : e e d e ス = 像 s ( n k P o . u r h ト p " " i " ト で e " t e N p w e e に s t : : r : を r な . 応 ( d G e r s f = 必 : e " 送 e い h 答 r i フ n i t i 要 / x " " : " 信 q 場 e は e r ァ ( t s x " な / t t p o u 合 a P s s イ o e . デ w , u n " n e 、 d N p ( ル u ( n / ー w r g l " s 内 e G o o と t r s g タ w t " r , t 容 r 画 n s し p e 1 r . l , " s を s 像 s . て u s : a k e , . 確 [ で e p 保 t p p a " p 認 ' は . a 存 _ o < h n , o C あ t t p n h . z s o り e h a s t p a t n ま x . t e t n k ( t せ t d h . p g i u e ん [ i , c : " . r n 。 : r o / c l t 内 5 n ' n / o , - 容 0 a w t e m T を 0 m b e x / d y 表 ] e ' n a w a p 示 ) ( ) t m o t e し o ) p r a ' ま u a l k = ] す # t s e s d : p . / a ! " 最 u f o 2 t = ) 初 t : r 0 a の _ g 0 ) ' 5 p / 9 i 0 a p / m 0 t r p a 文 h o u g 字 ) p b e を , e / / 表 r g p 示 e y r n x / a g # i > p ' s h : [ t - : _ \ d 5 o n r 0 k \ a 0 = n w ] T < " r h u t e t ) p : / / e x a m p l e . o r g / b b b > n s 1 : a a a \ " c c c \ " . " まとめ RDFデータの可視化にあたり、参考になりましたら幸いです。 ...

2024年6月7日 · 3 分 · Nakamura

Hugging Face SpacesとYOLOv5モデル(NDL-DocLデータセットで学習済み)を使った推論アプリの修正

概要 以下の記事でHugging Face Spacesと、以下の記事で紹介したYOLOv5モデル(NDL-DocLデータセットで学習済み)を使った推論アプリを紹介しました。 このアプリが動作しなくなっていたため、動作するように修正しました。 https://huggingface.co/spaces/nakamura196/yolov5-ndl-layout この修正で行なった対応についてメモします。 修正点 修正を加えたapp.pyは以下です。 i f i i m d i o ] t d a e ] d d m r m m o e n u i e r x e e p o p p d f p t t s t a m m o m o o e u p l c i m o o r r r l y r d r i # o r ] t u g g e r c p [ [ [ . t P t t o e f e m u e s t r r i l l ' ' ' = l I = l s s _ C t t s . . = p e e 『 『 『 a g L y j o u = w o p u = I J t s 源 源 平 g u r o s y ( l = i n u r o r = m S " i = 氏 氏 家 r n a i l o o i t r t v t n u e g a O Y o = 物 物 物 . c d m o n l m s e j h e _ t s r [ g N O n " 語 語 語 I h i p v o ) s s _ r i [ p . e ( L < [ 』 』 』 n ( o o 5 v : = u o b t m u I ( ) O = p ( ( ( t s r 5 l n o a t m t v 東 京 国 e h a t . m t . x t g _ a y 5 " s 京 都 文 r a s l o s l e h e i g p Y t 大 大 学 f r I o d . o s e m e e N O y 学 学 研 a e g m a e p a = a ( = D L l 総 所 究 c = r a d l a d = n g t " L O e 合 蔵 資 e F g ( ( n s u I e y p - v = 図 ) 料 ( a e " i d ( r m m , p i D 5 ' 書 . 館 y l n m a d e p a e l o t 館 j 提 o s a ) s f s y g = " c N e 所 p 供 l e k ( ) u e ' , L D x 蔵 g ) o ) a ) l a . p L t ) ' . , m # . t r f i l D - - . ] j u x s r r l a a D a j , p i r i y . a o ' b t o l p g n a n x r y m , e a c i g ' p 1 f y e a l s L g ' ] u 9 e [ n b r l = e n ] t 6 r 0 d a r a " t D : , s / e ] e c a b O s a , y n . r k y e u " t c o c t ( ( l t a e o l e o ) t i = p s n u o _ [ o m " u e t t v j 0 _ O t t e p 5 s ] a w r s r u - o n i i I ' t n n t g m G > s d ( # i h i a r Y , l o m _ n g a O - r r a b a e d L t l i e g o l " i O i a e s e x ) o v t y n u e I , 5 l o t l s m d e u = t ) a e N = t " s g m D t " r . e o L i ) e r " - t c e ) f D l o n o o e r d r c , d e L s r o d " ( b D e ) ) j a s e t c r c a r e t s i t e p u d t t r e s i n t o s e i n c s = a t d i a e l o n s i n c s . o r t b i U j p o p e t f l c i o t o i a n m d d , a e g a t a e n e r s c t i t i m i c a o l g n e e = m a o o r r d t e i c l c l l i t e c r , k a i e a n x n e a d m e p x o l a n e m s p t = l h e e e x a i < m m a p a l g h e e r s e ) t f = u " s h e t . t " p s : / / g i t h u b . c o m / n d l - l a b / l a y o u t - d a t a s e t \ " > N D L - D o c L D a t a s e t s < / a > . < / p > " まず、Gradioのバージョンアップに伴い、gr.inputs.Imageをgr.Imageなどに変更しました。 ...

2024年5月20日 · 5 分 · Nakamura

PythonでXML文字列を整形する

概要 PythonでXML文字列を整形するプログラムの備忘録です。 プログラム1 以下を参考にしました。 https://hawk-tech-blog.com/python-learn-prettyprint-xml/ 不要な空行を削除する処理などを加えています。 f i d r m e o p f m o r p r p p p r x t r e r r r e m e p e e e t l r t a t t t u . e t r t t t r d i s y y y n o f e m y d = = = p ( r i r = r p r e m o e r e t p u m . e . t o g i s t s y r h n u t u t _ i b y b s d ( . ( m t o r r r i r m " e " n i . [ p \ i n p l n d g a t a \ o ) r c s m : s ] e * e + ( \ S \ " n t n > " r " \ , i , n n " g " n ( " \ n r , t " o < , u r " g e , p h p r _ a " e s r > t t s \ t r e n y i d \ ) n . t g t < ) o " # p ) r 連 e 続 t # し t た y 不 改 x 要 行 m な ( l 空 空 ( 行 白 i を 行 n 削 を d 除 含 e む n ) t を = 単 " 一 \ の t 改 " 行 ) に ) 置 換 # イ ン デ ン ト 後 の 不 要 な 改 行 を 削 除 プログラム2 以下を参考にしました。 ...

2024年5月9日 · 3 分 · Nakamura

「SAT大蔵経DB 2018」で公開されているテキストの分析例

概要 「SAT大蔵経DB 2018」は以下のように説明されています。 https://21dzk.l.u-tokyo.ac.jp/SAT2018/master30.php このサイトは、SAT大蔵経テキストデータベース研究会が提供するデジタル研究環境の2018年版です。 SAT大蔵経テキストデータベース研究会は、2008年4月より、大正新脩大藏経テキスト部分85巻の全文検索サービスを提供するとともに、各地のWebサービスとの連携機能を提供することにより、利便性を高めるとともに、Webにおける人文学研究環境の可能性を追求してきました。 2018年版となるSAT2018では、近年広まりつつある機械学習の技術と、IIIFによる高精細画像との連携、高校生でもわかる現代日本語訳の公開及び本文との連携、といった新たなサービスに取り組んでみました。また、本文の漢字をUnicode10.0に対応させるとともに、すでに公開していたSAT大正蔵図像DBの機能の大部分も統合いたしました。ただし、今回は、コラボレーションを含む仕組みの提供という側面もあり、今後は、この輪組に沿ってデータを増やし、より利便性を高めていくことになります。 当研究会が提供するWebサービスは、さまざまな関係者が提供するサービスや支援に依拠しています。SAT2018で新たに盛り込んだサービスでは、機械学習及びIIIF対応に関しては一般財団法人人文情報学研究所、現代日本語訳の作成に関しては公益財団法人全日本仏教会の支援と全国の仏教研究者の方々のご協力をいただいております。 SAT2018が、仏教研究者のみなさまだけでなく、仏典に関心を持つ様々な方々のお役に立つことを願っております。さらに、ここで提示されている文化資料への技術の適用の仕方が、人文学研究における一つのモデルになることがあれば、なお幸いです。 今回は、上記のDBが公開するテキストデータを対象として、簡単な分析を試みます。 説明 以下の「T0220 大般若波羅蜜多經」のテキストを対象にします。 方法 テキストデータの取得 ネットワークを確認したところ、以下のようなURLでテキストデータを取得することができました。 https://21dzk.l.u-tokyo.ac.jp/SAT2018/satdb2018pre.php?mode=detail&ob=1&mode2=2&useid=0220_,05,0001 0220_,05,0001の部分について、05を06に変えると6巻のデータが取得できました。また、末尾の0001を0011に変更すると、0011の前後を含むテキストが取得できました。 この傾向を踏まえて、以下のようなプログラムを実行しました。 i i i f d d d d d d i m m m r e e e e e e f p p p o f f f f f f o o o m r r r f " r r w " w r " w p " p w g " s i r m f _ m t t t b e " e e r " i e " i r " a h e " p f e a o o n a s t " s t i " t a " t o " g i t " a t i l r a i o r t 4 c F p u t W h d R h c P e l _ E n s u n s m n s e i h e t o r e r f _ e r e r _ e u i o i e n i p l x s p l r r ( p e ( q m i _ t i n n _ i o i h a o e s o s r d p f l e f a a t a a e n ) = o r _ ) u e m s c m s h t p l t d p t s c t T l a s w g s r = n s t : l o _ e p o h e e B t e e e m s e u _ e r r = t o e _ n e t a s t u N [ c s o u e . e m s n . l n r v s u = h s s : s w p e b _ _ c s : _ r o " i e = t r p s s = a l ( w ( H ( n o s = e u . o o r a w r s p t o i n n 0 n s = s t ( l u ( t f r f T f l e : f r = p u u i g _ e t a s u d e 5 s u a e r t s h i i i M i B u s " " l a p p t e p a r g p l " _ " B r n e e i o e l t l L l e m 0 h . f t e _ a k e t . = a , o v _ e l d p q f u e e e e a e e 0 t s " h = = _ s g = _ h f s l o _ a ) ( u u p p p ( p c p u ( a 0 t p h . h t e i e i s t " s l m u : p 1 e l , r a s a o a t v c 1 p l t e r f t r _ n d n p _ 0 : u a t a ) s S e t o t n t i o h " s i m x e e m s e ( l d a i 6 m i i r t o f t h u h t h f l : t l i a t l = t w s a _ n d " e n f s s u i t , p ) e , u ) / ( / s d c ( r _ o s a s . , ( _ u e # . p l i . : n l : o / " { t _ h s g p u t l [ s v _ l s g ( e f " p t " S l 2 u i s h _ o e = a p l - p " o " S S e r p i w r r o u 1 s d ( t s u t = g ) p ( 1 l 0 l : o H l t e a e " e f " u m d e } o m o p _ e : a " ] i 7 ) u T e ( s t d ) t r ) p e z i . p l u , l p _ g s . t " p M e u p h t o ( k d h a ( p a a s e p t ( ] L p r o ) H a i m a f b . = t t o ( o s g t a e " l n : T s f s i y l " m h p u p t e r I n x . c f ) s M y a l . ) l ) a r a _ _ D " t " o o e L f ( f e i u [ " : t l t p s , ) n r . i ) f i . t - 1 h ) h a t f [ t t c l ) i l r e t ] ) ) g r r c - e 1 e o e l e e r o e : o l 1 n x n : e : a a k _ m a ] t s t t d t y i s [ e , e a ( i o d t s 0 f c n n ) n . ( h _ : r o " t d , g a s e = 4 o n h c o " ] m d t t r " . u s l m o e h v j p o n t b l t t e p ) u " h e . a u m r / p ) e f p r l S o a f n . p A o g r r i s p a T b i e s l a g 2 j v e e i r e 0 e e m r . t s s 1 c n a " " s e 8 t k ) " r u / . U i " p " n s " R n a ) t a " L g r i t " . s l d " a e b " d n 2 " r o 0 e c 1 q o n 8 u n e p e t w r s e e t n p . t a p . g h " e p " ? " i m s o d f e o = u d n e d t . a " i " l " & o b = 1 & m o d e 2 = 2 & u s e i d = 0 2 2 0 _ { v o l } _ { p a g e _ s t r } " 上記の処理により、HTMLファイルをダウンロードすることができます。 ...

2024年4月25日 · 17 分 · Nakamura

researchmapのapiを使う

概要 researchmapのapiを使って、業績リストを作成する機会がありましたので、備忘録です。 researchmapのapiに対するクエリ例 researchmapのapiに対するクエリ例をいくつか紹介します。 論文の一覧を取得する https://api.researchmap.jp/nakamura.satoru/published_papers 上限を指定する(limitの使用) https://api.researchmap.jp/nakamura.satoru/published_papers?limit=5 x件以降の結果を取得する(startの使用) https://api.researchmap.jp/nakamura.satoru/published_papers?limit=5&start=6 出版年月日を指定する(from_dateとto_date) https://api.researchmap.jp/nakamura.satoru/published_papers?from_date=2023-04-01&to_date=2024-03-31 Pythonでの使用例 指定したユーザと出版年月日に基づき、published_papersとpresentationsをExcelに書き出します。 # i i i c | m m m l p p p a e o o o s x r r r s d @ d d d d d d d d p t t t e s e e e e e e e e o C f t f f f f f f f f r r p o l a t e a s i s s s s o t m c c p s s s f u p } r i e p r f r p a c ( c c c c ( c ( c ( c ( c ( c ( r } p r f r p a c c c c ( c ( c ( c ( r } w w s s q n e _ e e e e s i a l l r e e e e r a e f l a o o e r u 1 デ 2 3 4 5 半 6 半 7 半 8 1 9 1 1 1 e r o o e r u 1 2 3 4 半 5 半 6 1 7 1 e r i e e u d n i l l l l . c i i i o l l l t l r s s p w r t o t ジ 角 角 角 : : 0 : t e w r t o t 角 角 : : t i t l l e a t n f f f f m m n e e c f f f c a p r e e s u c h = タ = = = = 数 = 数 = 数 = 有 = 有 有 u s s u c h = = = = 数 = 数 = 有 = 有 u t h f f s s : i . . . . a e ( n n e . . . h = m " " " " o e d r : r r i r r e o ル 字 字 字 = r c c c c c c c c c c e i r r e o 字 字 r c c c c c c c e s s . . t t s d d o k t s t t s d d w _ s l s f t n s a e a _ = t o n s r オ ) ) ) 0 0 0 n 1 2 3 4 5 6 7 8 9 1 n = t o n s r " " ) ) 0 0 n 1 2 3 4 5 6 7 _ p e e d d s a _ l a a u e h l . s f f r d f i t r o s p t t i p e w s _ ブ ' ' ' : : : : : : : : : : : : 0 t e w s _ 2 3 ' ' : : : : : : : : : t d l l f f s _ u t t t d o u = p _ _ _ i a " = m a o _ e o a u s r [ m s p _ l ' ジ ' ' ' ' ' ' ' ' ' ' 無 ' 無 無 { : a [ m s p _ l ' . . ' ' ' ' ' 無 ' 無 { o . f f _ _ ( g e e p i d g r d p p t t h i r m d n r e o ] . d p i 1 ェ 2 3 4 5 ' 6 ' 7 ' 8 ) 9 ) ' ) i " i i i i f 1 1 t ] . d p i 1 発 学 4 ' 5 ' 6 ) 7 ) " i i i i 1 1 _ E . . p p p s _ _ u r , C o a a r e a t { t t _ a = s = n c i a . a s . ク . . . . . . . ' . ' 1 ' t , t t t t " 1 i i a . r s . 表 会 . . . ' . ' , t t t t e x d d a r d e = s e t s l c t p e _ ( t " " d t e E e n p D p t 掲 ト 著 論 雑 巻 発 最 査 ' 国 ' 0 ' e e e e e { i i o n p D e t 発 標 等 発 発 招 ' 国 ' e e e e i i x c f f p e l t n _ ( d i e a e s t s p : : a e r . r p x s p a e 載 識 者 文 誌 行 初 読 ' 際 ' . ' m " m m m m i f f i n p a s 表 題 名 表 表 待 ' 際 ' " m m m m f f c e _ _ e s f s a d d s a e s ( r e o e s t " e s e r c s p e t r = 論 別 名 標 名 年 と の 共 オ . . . . . [ t f _ p e t e = 者 " " 年 年 講 学 . . . [ [ e l p p r e , l r i e t n s s n _ l : 1 0 e : q t s o e i a n a _ 文 子 ' 題 ' 最 有 著 ー g j g g g ' e i i p r n a n 名 ( ( 演 会 j g g ' ' i i l W a r . n u t = r l e t _ e = t e f / 0 , " u a p c p n p d F i [ の ) ' ' ' 後 無 プ e o e e e p m t t i r e d F t [ ' 開 終 o e e p p t t ( r p e t t s g f _ ( d l a x , / 0 : s e t o e t g e ( r t a D ' ' ' ' の ン t i t t t u . e e t o s ( r a a ' 始 了 i t t u u e e s i e s o a l = d = . s s a f s t c a , e s u n s i _ r s a e u O ' ' 頁 ア ( n ( ( ( b g m m e c e s a t u ' ) ) n ( ( b b m m e t r e _ t u a o t l t ) e i e d p s l t s s s o l s e m m t I ' ク ' ( ' ' ' l e . . m e n e m i t ( ' ' l l . . l e . n c i g d t f u a u a : l o l a i e f s _ e i n o : l e ( h セ i a p p v i t g g . s t l e o h a p e i i g g f r t t s o , a e " t r g ( f n ( t . l . . c . n ( g f ( s [ ス d u a u o c ( e e g s a f ( n [ u r v c c e e ) ( o a v n t _ d p t , ) . ) a r f d g o j g f i . r e " e t p b l a ' t t e i t . r _ " t e e a a t t : f _ t ( . d e e a u , f = _ e . a e d s _ " c p o l n n h e l u t s ( ( t n i p o i n h s n t t ( ( ' e i f t a _ n t t d e t s d t t e o f E ( r w f a t o r i m i t ' ' ( g o r w t a o e t i i ' ' { x o " o t s d a _ d a t s y e a e ( n u r s o s , m i r _ c e o a r i ' _ n o s e m r n ' o o i i s c n { _ e t / d a t c e p a t _ u = ( n r e c ) e f _ t a ' n r e s r l s c ) m e _ t , n n n s e e . s c _ a { i t e h l e r e e r = ) c o l e i " i l i t , _ t f _ m o : e ( " l a _ _ v _ l l t e s s r s r e _ _ f , c _ n l . t r f s t ] e i t i d i e i : g s s ] i t { d d i i f ( o l v t t e , _ s d . h s d , 2 g i , s e r s l o N a n r n i i s e s i } a a t n . w _ f ( a l e t a f p m t , 0 e o f _ m f s t e n o t g e t s c _ l f t o ) t t e t o r e . f r f e n a t e r a a p 0 t n e p p ) o ' ) ' _ n e _ e e _ ( p f o ) n . e e d e u i x o " t . x d r a t o p r a : ( ( t a a : r , , , n e ' p ' r o s r , r , _ g ' ' ' r t t c u { , s i ) t ( c c . t r " d c p p a ) ] a , n p e e t e ] ] , n p e e t s l s : , ' h e j , a i a h e e a { { m , [ g a e l s i a i t [ [ a u r l p e d u t p _ s p m t t i r r u } } e : e F t n f e t u t ( : : F t t , ( u l a g _ d u d s / s e a n s _ t ) ) ' 4 ' a i _ , n e t l ' 4 4 a i _ w t f t } a b a i { = m ) g ) i h . . , ] , l o a t m h e j ] ] l o d s r _ . e k t l t n s p s : t g g , s n c p a ) ' a , , s n i h i d o _ { = e i a g e a " { e i e e { e a c r t : i , ' e a r e t i u e s T _ s ( _ l r , d m n t t } ) l e e i n , ) l } e e r t n e r e h ' f f a a ( ( ( ) ) _ s s o { _ / t r } p d l u n e p u . m [ t i i ' ' . } e c s e n i } e p m _ , / u ) f e d d r n s s ] a t t d j g - l o ' n _ t ) l r e n p t : . ) ) _ e c l ) ) _ e e o a e { s l , t i e . ) s e r a s a _ d p s t u t m m i ' t i e l a t m g , e s g m h p d a a e i g y ) . ' , ( t a F t e . e e e e e e i t p n o } p ) g , ' e 0 b a i m g t 0 n d = e r r e e t n / e e j m , o l o ( e ( , t . ' t s } _ r a ) { } t [ a . r s n i t ' a x P _ . / s s t : d : ( N ) ' g a e s t ( j t l a n c p t ' i a ' o , , e t ) ) e ' a i s p a s r a , o t { a n t i : m p ' o x e m v e r n a r u e ( o e ) r , n ' r e " s t s s _ e t ] ' n l ) e ' , s = , e } e ' t s h ) ) e ' s s , ' ' n _ l , y p o [ , n , e e e , P i t { f p o r 0 d n ) F n r n a s . s e n s ] i F 0 t , a g i e d t e p e } s ' , n a e l i n s e i l a l " e , g l r s n d e x o f p f . _ s s e e e n = n . e . s { p e ' ) = x t F s d r p t } a ) , ' = a a . a _ r a ) g e o F t l c t p e t . e e { l p a i s s e r s u g ' l } s e l o e v _ o e s e , s ) e n s n ) " e c n _ t e . p e s , n e t c ( g 0 y ) ' d s a o " 0 e x , i } s t d j ) , t l n " i i e a } ( ' i d n o } " " " ) n e g n " , , j d x _ _ ) a a e = l p [ " s x F o r ] , = a g o ) w F l i c ] [ r a s c e ] i l e ) s ) t s ) s ] e e i r ) n : g _ l o g i c ) 使用例は以下です。dataフォルダにcsvやexcelが出力されます。 ...

2024年4月15日 · 15 分 · Nakamura

AIPscanを試す

概要 以下のツールを試します。 https://github.com/artefactual-labs/AIPscan 本ツールは以下のように説明されています。 AIPscan was developed to provide a more in-depth reporting solution for Archivematica users. It crawls METS files from AIPs in the Archivematica Storage Service to generate tabular and visual reports about repository holdings. It is designed to run as a stand-alone add-on to Archivematica. It only needs a valid Storage Service API key to fetch source data. AIPscanは、Archivematicaユーザーにより詳細なレポーティングソリューションを提供するために開発されました。それはArchivematicaストレージサービスのAIPからMETSファイルをクロールして、リポジトリ保有物についての表形式および視覚的レポートを生成します。これはArchivematicaへのスタンドアロンアドオンとして実行されるように設計されています。ソースデータを取得するために有効なストレージサービスAPIキーのみが必要です。 Archivematicaのストレージサービスに格納されたAIPの内容を視覚化します。 本記事は、その使い方について説明します。 セットアップ 以下の記載の通りに進めることでセットアップすることができました。 https://github.com/artefactual-labs/AIPscan?tab=readme-ov-file#installation 試す:ストレージサービスの追加 Archivematica Storage Servicesメニューをクリックし、以下にアクセスします。画面下部のNew storage serviceボタンをクリックします。 ...

2024年2月25日 · 1 分 · Nakamura

デジタル源氏物語における校異源氏物語と現代語訳の対応づけ

概要 「デジタル源氏物語」は『源氏物語』に関する様々な関連データを収集・作成し、それらを結びつけることで、『源氏物語』研究はもちろん、古典籍を利用した教育・研究活動の一助となる環境の提案を目指したサイトです。 https://genji.dl.itc.u-tokyo.ac.jp/ 本サイトが提供する機能の一つとして、「校異源氏物語と現代語訳の対応づけ」があります。以下のように、「校異源氏物語」と青空文庫で公開されている与謝野晶子訳の対応箇所がハイライト表示されます。 この記事では、上記の機能を実現するための手順について説明します。 データ 以下のようなデータを作成します。 https://genji.dl.itc.u-tokyo.ac.jp/data/tei/koui/54.xml 「校異源氏物語」のテキストデータに対して、anchorタグを使って、与謝野晶子訳のファイルとIDのペアを対応付ます。 < t e < x b t o < > d p y > < < < < < > l p l s / l b b b e < や < 又 s b / / g a ま a の e > f > n に n 日 g a c c お c は > c o h は h よ s r o し o か = r r て r は " e れ に # s c い c z p o せ o o = r さ r n " r せ r e h e 給 e _ t s や s 2 t p う p 0 p = に = 5 s " 経 " 5 : h 仏 h " / t な t / t と t n w p く p = 3 s や s " i : う : 2 d せ / 0 . さ / 5 g せ g 5 r e 給 e " g n n / / j j > k i i o . . u d d i l l g . . e i i n t t j c c i . . m u u o - - n t t o o o g k k a y y t o o a . . r a a i c c / . . a j j p p p i / a a i p p t i i e / / m i i s t t / e e 2 m m 0 s s 5 / / 5 t t - e e 0 i i 1 / . y y j o o s s s o a a n n n " o o > / / 5 5 6 6 . . x x m m l l # # Y Y G G 5 5 6 6 0 0 0 0 0 0 0 0 0 0 3 4 0 0 0 0 " " / / > > このデータの作成にあたっては、以下のツールを開発して使用しました。 ...

2024年1月7日 · 14 分 · Nakamura