useruser が 2024年09月27日11時17分22秒 に編集
コメント無し
本文の変更
## 使用したもの ### ラズパイ4 ### ラズパイカメラ ## お題目 最近はなんでもデジタルで物事が済みます ですが、「現実の文と記号の入力」 煩わしくはないでしょうか? そんな不便を解消 テキストデジタル変換機のご紹介です! ### イメージ図 ![イメージ図1 従来の入力作業](https://camo.elchika.com/bcaddc1e610c3dc8512c49d8f6988b251d67f2d2/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f37316233363162622d303364642d343765302d626661622d3938666438313765373532622f33613431306438322d643264322d346665642d616366352d393963386661343635663665/) ・時間がかかる ・入力する人間が必要 ![イメージ図2 新たな入力作業](https://camo.elchika.com/b1adeb0b496891612387dbd916bf7d9c8f8cb54a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f37316233363162622d303364642d343765302d626661622d3938666438313765373532622f61613439656231362d356631352d346632312d396166312d656431393437383063383431/) ・誰でも即時に入力完了! ・撮るのは人間でなくてもよい ### コード ```# python3 # coding:utf-8 import os import sys import RPi.GPIO as GPIO import datetime from time import sleep from PIL import Image import pyocr import pyocr.builders PNAME = 'test' # 保存するファイル名の基本 TSW = 24 # TriggerSW(白SW)のBOAED番号 GPIO.setmode(GPIO.BCM) GPIO.setup(TSW, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) print("CAMERA START") def IMAP(newfilename): tools = pyocr.get_available_tools() if len(tools) == 0: print("No OCR tool found") sys.exit(1) tool = tools[0] print("Will use tool '%s'" % (tool.get_name())) langs = tool.get_available_languages() print("Available languages: %s" % ", ".join(langs)) lang = langs[0] print("Will use lang '%s'" % (lang)) txt = tool.image_to_string( Image.open(newfilename), # newfilenameを直接使用 lang=lang, builder=pyocr.builders.TextBuilder() ) print("Extracted text:") print(txt) try: while True: if GPIO.input(TSW) == GPIO.HIGH: d = datetime.datetime.now() dstr = '{0:%Y%m%d_%H%M%S}.jpg'.format(d) newfilename = PNAME + dstr # ファイル名の作成 os.system('libcamera-still -n -o test.jpg') # 撮影 img = Image.open("test.jpg") # ファイルを開く #img_rotate = img.rotate(90) # 画像90度回転 #img_rotate.save("test.jpg") # ファイル保存 os.rename('test.jpg', newfilename) # ファイル名の変更 sleep(2) IMAP(newfilename) # 画像処理の関数を呼び出し except KeyboardInterrupt: print("\nCAMERA STOP") GPIO.cleanup() sys.exit() ``` ### 挙動 写真からテキストを抽出します ## まとめ
こちらを用いることで、写真からパソコンにテキストを取り込むことができました。 後書き 時間がなくてテキストファイルに変換したり、AIや学習データの用意、閾値を設定したりできなかったのが残念です。
## 参考にしたサイト https://gangannikki.hatenadiary.jp/entry/2019/07/30/190000