main: main関数の役割は、指定された画像ファイルまたはディレクトリに対して日本語のOCRを実行し、結果を出力することです。
Code Description: main関数は、まず空のリストdを作成し、args.imagesで指定された各ファイルまたはディレクトリを処理します。指定されたパスがファイルである場合、そのファイルをリストdに追加します。ディレクトリである場合、そのディレクトリ内のすべてのファイルをリストdに追加します。指定されたパスがファイルでもディレクトリでもない場合、エラーメッセージを表示して処理を終了します。
次に、get_ocr関数を呼び出し、リストdに含まれるすべての画像ファイルに対してOCRを実行します。この関数は、画像のDPI、CUDAの使用、検出画像の出力、低GPUメモリモードの使用などの設定を引数として受け取ります。get_ocr関数は、OCRの結果を構造化された形式で返します。
OCRの結果は、args.output_formatで指定された形式に基づいて出力されます。出力形式が'json'の場合、結果をJSON形式で表示します。それ以外の場合、各ファイルの検出結果をテキスト形式で表示し、各ブロックとその中の文を出力します。
Note: 使用する際には、args.imagesで指定するファイルやディレクトリが正しく存在することを確認してください。また、OCRの結果を正しく出力するために、args.output_formatを適切に設定してください。
Output Example:
file "example.png" detected in 300 dpi.
[Block #0]
こんにちは
[Block #1]
さようなら
filter_block: The function of filter_block is 文字列内の特定の単語をフィルタリングし、必要に応じて置換することです。
parameters: The parameters of this Function. · sent: フィルタリングと置換を行う対象の文字列リスト。
Code Description: この関数は、与えられた文字列リスト sent 内の各文字を、事前に定義された filter_word リストに基づいてフィルタリングし、必要に応じて置換します。filter_word は、フィルタリング対象の文字、置換後の文字、前後の文字条件を含むリストです。
sentの各文字について、filter_wordの各エントリと比較します。filter_word[j][0]が現在の文字sent[i]と一致する場合、置換の条件を確認します。filter_word[j][2]が空文字列の場合、現在の文字が文字列の最初であるかを確認します。それ以外の場合、前の文字がfilter_word[j][2]に含まれているかを確認します。filter_word[j][3]が空文字列の場合、現在の文字が文字列の最後であるかを確認します。それ以外の場合、次の文字がfilter_word[j][3]に含まれているかを確認します。- 上記の条件が満たされる場合、現在の文字を
filter_word[j][1]で置換します。
この関数は、get_ocr 関数内で使用されており、OCR処理の一環として検出された文字列のフィルタリングと置換を行います。get_ocr 関数は、画像ファイルからテキストを検出し、フィルタリングされた結果を返します。
Note:
filter_wordリストは、フィルタリングと置換のルールを定義するために事前に設定されている必要があります。sentは文字列のリストとして提供される必要があります。- この関数は、
get_ocrの一部として使用されるため、OCR処理の前提条件が満たされていることを確認してください。
get_ocr: The function of get_ocr is 日本語のOCR(光学文字認識)を画像ファイルから実行し、検出されたテキストを返すことです。
parameters: The parameters of this Function. · filelist: 処理対象の画像ファイルのリスト。 · dpi: 画像の解像度を示すドットパーインチ(DPI)。 · use_cuda: CUDAを使用してGPUで計算を行うかどうかを示すブール値。 · output_detect_img: 検出された画像を出力するかどうかを示すブール値。 · low_gpu_memory: GPUメモリが少ない環境での動作を示すブール値。
Code Description: get_ocr関数は、指定された画像ファイルリストに対してOCRを実行し、検出されたテキスト情報を構造化された形式で返します。まず、必要なモデルファイルが存在するかを確認し、存在しない場合はエラーメッセージを表示して終了します。次に、各画像ファイルが存在するかを確認し、存在しない場合はエラーメッセージを表示して終了します。
get_detectionnet関数を使用して検出モデルを取得し、Detectorクラスをインスタンス化して画像内のテキスト領域を検出します。検出された領域は、detect_imageメソッドを使用して取得されます。次に、get_classifiernet関数を使用して分類モデルを取得し、bounding_boxメソッドを使用して各領域のテキストを識別します。
検出されたバウンディングボックスは、non_max_suppression関数を使用して重複を排除し、column_wordlines関数で整理されます。最終的に、検出されたテキスト情報は構造化された辞書形式でまとめられ、結果として返されます。
この関数は、main関数から呼び出され、指定された画像ファイルまたはディレクトリ内のすべての画像に対してOCRを実行します。結果はJSON形式またはテキスト形式で出力されます。
Note: 使用する際には、モデルファイルが正しく配置されていることを確認してください。また、CUDAを使用する場合は、適切なGPU環境が必要です。
Output Example:
[
{
'filename': 'example.png',
'detected_dpi': 300,
'blocks': [
{
'id': 0,
'sentences': [
{
'sent': 'こんにちは',
'bbox': [
{'word': 'こ', 'box': [10, 20, 30, 40], 'score': 0.95},
{'word': 'ん', 'box': [35, 20, 55, 40], 'score': 0.90},
...
]
},
...
]
},
...
]
},
...
]