import gradio as gr from transformers import TrOCRProcessor, VisionEncoderDecoderModel from PIL import Image, ImageOps # OCRモデルとプロセッサの準備 processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-stage1") model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-stage1") # OCR実行関数 def ocr_image(image, invert_image): # チェックボックスがオンなら画像を反転 if invert_image: image = ImageOps.mirror(image) # 画像をモデルに入力し、文字起こしを実行 pixel_values = processor(images=image, return_tensors="pt").pixel_values generated_ids = model.generate(pixel_values) generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0] return generated_text # Gradioインターフェースの構築 interface = gr.Interface( fn=ocr_image, # 実行関数 inputs=[ gr.Image(type="pil"), # カメラからの画像入力 gr.Checkbox(label="画像を反転") # 画像反転のチェックボックス ], outputs="text", # 出力形式(テキスト) live=False # リアルタイム処理を無効化 ) # 実行ボタンの設定 interface.launch()