ã²ãŒã ç»é¢ããæåãæœåºããOCRããŒã«ã®ãããã¿ã€ãéçºèšé²ãææ°ã®Pythonç°å¢ã«ãããDLLãšã©ãŒãGPUã¡ã¢ãªäžè¶³ã®å£ãä¹ãè¶ããCPUçç°å¢ãåæ§ç¯ããããšã§EasyOCRã®åäœæ€èšŒã«æåããŸãããAIéçºç¹æã®äŸåé¢ä¿ãã©ãã«ãšãããã解決ãããšã³ãžãã¢ãªã³ã°ã®è»è·¡ããŸãšããŠããŸãã
ååã®èšäº[ããã®ã²ãŒã ã§èšèªåŠç¿ããèªååãããPythonÃEasyOCRã§æã翻蚳ããŒã«èªäœãšããŒããã©ãªãªæ§ç¯ã®è»è·¡]ã§ã¯ãã²ãŒã ã®æ²¡å ¥æãæãªãããšãªããåŠç¿äœéšãžãšå€æãã VGLLïŒVideo Games for Language LearningïŒ ã®èšèšææ³ã«ã€ããŠç޹ä»ããã
ä»åã¯ããããå®è£ ç·šã«å ¥ãã
æåã®ããŒãã¯ãã²ãŒã ç»é¢ããæåæ å ±ãæœåºããOCRïŒå åŠæåèªèïŒ ã ã翻蚳ãåèªæœåºãåŠç¿å±¥æŽã®çæãªã©ãVGLLã®ããããæ©èœã¯ããã®å·¥çšãæ£ããå®çŸã§ãããã©ããã«ããã£ãŠããã
æ¬èšäºã§æ±ãã®ã¯å®æçã§ã¯ãªããEasyOCRãã²ãŒã ç»é¢ã§å®éã«åäœããã®ããæ€èšŒããããã®ãæåã®ã¹ãã€ã¯ïŒæè¡æ€èšŒïŒã§ããã
EasyOCRãéžãã çç±ã¯äœããã²ãŒã ç¹æã®ãã©ã³ããUIããããŠéçºäžã«ééããç°å¢ãã©ãã«ãã©ãä¹ãè¶ããã®ãã
æåã ãã§ã¯ãªãã倱æã詊è¡é¯èª€ãå«ããŠãVGLLããã²ãŒã ç»é¢ãããã¹ããžå€ãããæåã®äžæ©ãèšé²ããŠããã
å®è£ ã³ãŒãïŒOCRå®éšçšãããã¿ã€ã (spike.py)
ãŸãã¯ãã²ãŒã ç»é¢ããæåãæœåºããæå°æ§æã®ãããã¿ã€ããäœæããã
ä»åã®ç®çã¯ãé«åºŠãªååŠçã翻蚳æ©èœãå®è£ ããããšã§ã¯ãªããEasyOCRãã²ãŒã ç»é¢ãæ£ããèªèã§ããããæ€èšŒããããšã ã
ãã®ãããç»åãèªã¿èŸŒã¿ãOCRãå®è¡ããèªèããæååãšä¿¡é ŒåºŠïŒConfidenceïŒããã°ãžåºåããã·ã³ãã«ãªæ§æãšããŠããã
PythonïŒ
import easyocr
import logging
# ãã°èšå®ïŒéçºã®æ§åãå¯èŠåãã
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
def run_ocr(image_path: str, languages: list = ['en', 'ja']):
logging.info(f"Initializing EasyOCR with languages: {languages}")
# readerã®åæåïŒååã®ã¿ã¢ãã«ããŠã³ããŒããçºçããïŒ
reader = easyocr.Reader(languages)
logging.info(f"Starting OCR for: {image_path}")
# OCRå®è¡
# detail=1ã«ããããšã§ãããã¹ãã ãã§ãªã座æšã粟床ãååŸã§ãã
results = reader.readtext(image_path, detail=1)
for (bbox, text, prob) in results:
# bbox: 座æš, text: èªèæåå, prob: èªè粟床
logging.info(f"Detected: {text} | Confidence: {prob:.2f}")
if __name__ == "__main__":
# ãã¹ãç»åãžã®ãã¹
test_image = "sample_game_screenshot.png"
run_ocr(test_image)ä»åã® spike.py ã¯ã以äžã®3ã€ã®ã¹ãããã§ã²ãŒã ç»é¢ãè§£æããŠããã
- OCRãšã³ãžã³ã®èµ·åïŒåæåïŒ
easyocr.Reader(languages)ãå®è¡ããããšã§ãæå®ããèšèªã®ãæåèªèã¢ãã«ããã¡ã¢ãªã«èªã¿èŸŒãã§ãããããã§èšèªãæå®ããããšã§ãèªè察象ãçµã蟌ã¿ã粟床ãäžããŠããã - ç»é¢ããã®æåæœåº
reader.readtext(image_path, detail=1)ã¯ãç»åå šäœããæåãããé åãç¹å®ãããããããã¹ãããŒã¿ãšããŠåãåºããŠãããdetail=1ãæå®ããããšã§ãåãªãæåæ å ±ã ãã§ãªãããããç»é¢äžã®ã©ãã«ãããïŒäœçœ®æ å ±ïŒãäžç·ã«ååŸããŠããã®ããã€ã³ãã ã - çµæã®è§£æãšéžå¥ æœåºãããããŒã¿ã¯ãã©ãã«ãã©ããªæåããã©ããããã®ç¢ºä¿¡åºŠã§ååšãããããšããæ
å ±ãå«ãã§ãããã«ãŒãåŠç (
foræ) ã§ããããäžã€ãã€åãåºãããã°ãšããŠåºåããããšã§ãã©ã®éšåãæ£ããèªããã©ãã§èª€èªèãèµ·ããŠããããåŸãã远跡ã§ããããã«ããŠããã
ãã®ããã«ãOCRã®åŠçã¯ãåæåã»èªèã»è§£æãã®3段éã§æ§æãããŠãããæ¬¡åã®ã¹ãããã§ã¯ããã®æœåºãããããã¹ãããããã«ãåŠç¿çšã®åèªããšããŠåãåããŠãããããã®NLPïŒèªç¶èšèªåŠçïŒãžèžã¿èŸŒãã§ããäºå®ã ã
OCRåŠçã®æµã
ä»åã®ãããã¿ã€ãã¯ã倧ããåããŠ3ã€ã®å·¥çšã§ã²ãŒã ç»é¢ãè§£æããŠããã
OCRãšã³ãžã³ã®åæå
reader = easyocr.Reader(languages)æåã«EasyOCRã®èªèã¢ãã«ãèªã¿èŸŒãã
ããã§æå®ããèšèªã«å¯Ÿå¿ããOCRã¢ãã«ãããŒãããã以éã®æåèªèã«å©çšããããååå®è¡æã«ã¯å¿ èŠãªã¢ãã«ãèªåã§ããŠã³ããŒãããããããç°å¢ã«ãã£ãŠã¯ååã®ã¿æéããããå Žåãããã
ã²ãŒã ç»é¢ããæåãæœåºãã
results = reader.readtext(image_path, detail=1)ãã®åŠçãOCRã®äžå¿ãšãªãã
æå®ããç»åãè§£æããæåãååšãããšå€æããé åããšã«èªèãè¡ãã
ä»å㯠detail=1 ãæå®ããŠããããã
ã»æåã®äœçœ®ïŒåº§æšïŒ
ã»èªèããæåå
ã»èªèä¿¡é ŒåºŠïŒConfidenceïŒ
ããŸãšããŠååŸã§ããã
äœçœ®æ å ±ãååŸã§ããããšã§ãå°æ¥çã«ã¯äŒè©±ãŠã£ã³ããŠãUIãªã©ç¹å®é åã®ã¿ã察象ã«OCRãå®è¡ãããšãã£ãæ¡åŒµãå¯èœã«ãªãã
èªèçµæã確èªãã
for (bbox, text, prob) in results:OCRãè¿ããèªèçµæãé çªã«åãåºãããã°ãžåºåããã
ä»åã¯éçºåæã®æ€èšŒæ®µéã§ããããã
ã»èªèããæåå
ã»èªèä¿¡é ŒåºŠïŒConfidenceïŒ
ã確èªããªãããã©ã®æåãæ£ããèªèãããã©ãã§èª€èªèãçºçããŠããããææ¡ã§ããããã«ããŠããã
ãã®æ®µéã§éèŠãªã®ã¯èªè粟床ãã®ãã®ã§ã¯ãªããã²ãŒã ç»é¢ããæåæ å ±ãæœåºã§ããããšã確èªããããšã ã
åäœæ€èšŒ
ãããã¿ã€ãã®å®è£ ãå®äºããã®ã§ãå®éã«OCRãå®è¡ããŠåäœã確èªããŠã¿ãã
ä»åã®æ€èšŒã§ç¢ºèªãããã£ãã®ã¯ãEasyOCRãã²ãŒã ç»é¢ãæ£ããèªã¿èŸŒã¿ãæåæ å ±ãååŸã§ããç°å¢ãæ§ç¯ã§ãããã
ããããæåã®å®è¡ã§äºæ³å€ã®å£ã«çŽé¢ããã
Python 3.14ã§ã¯å®è¡ã§ããªãã£ã

å®è¡çŽåŸã以äžã®ãšã©ãŒã衚瀺ãããã
OSError: [WinError 1114] ãã€ããã㯠ãªã³ã¯ ã©ã€ãã©ãª (DLL) åæåã«ãŒãã³ã®å®è¡ã«å€±æããŸããã
Error loading "...torch\lib\c10.dll" or one of its dependencies.ãšã©ãŒã¡ãã»ãŒãžã確èªãããšãtorch ãå©çšããDLLã®èªã¿èŸŒã¿ã«å€±æããŠããããšãåããã
調æ»ãããšãããåœæäœ¿çšããŠãã Python 3.14ïŒ2026幎7ææç¹ã®ææ°çïŒ ãšãEasyOCRãäŸåããPyTorchãšã®çµã¿åãããåå ã§ããå¯èœæ§ãé«ãã£ãã
Pythonæ¬äœãææ°ã§ãã£ãŠããåšèŸºã©ã€ãã©ãªãããã«å¯Ÿå¿ãããšã¯éããªããAIã©ã€ãã©ãªã¯ç¹ã«äŸåé¢ä¿ãå€ããããŒãžã§ã³ã®çµã¿åããã«ãã£ãŠã¯æ£åžžã«åäœããªãã±ãŒã¹ãå°ãªããªãã
ããã§ä»åã¯ãå®å®åäœã®å®çžŸããã Python 3.12 ãžç°å¢ãåãæ¿ããå床æ€èšŒãè¡ãããšã«ããã
è£è¶³
ãã®DLLãšã©ãŒã«ã€ããŠã¯ãåå ã®èª¿æ»ãã解決ãŸã§ãå¥èšäºãšããŠãŸãšããäºå®ã§ããã
ä»åºŠã¯CUDAãç«ã¡ã¯ã ãã
Python 3.12ãžåãæ¿ããããšã§ãDLLãšã©ãŒã¯è§£æ¶ãããã
ããããOCRã®å®è¡çŽåŸã«ä»åºŠã¯å¥ã®ãšã©ãŒãçºçããã
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 550.00 MiB. GPU 0 has a total capacity of 2.00 GiB of which 323.91 MiB is free. Of the allocated memory 674.42 MiB is allocated by PyTorch, and 25.58 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)GPUã®åæåãŸã§ã¯æåããŠãããã®ã®ãOCRã®å®è¡æã«å¿ èŠãªGPUã¡ã¢ãªã確ä¿ã§ãããåŠçã忢ããŠããŸã£ãã
GPUã䜿çšããªãèšå®ã詊ãããããã®ç°å¢ã§ã¯æåŸ ã©ããã«CPUå®è¡ãžåãæ¿ããããå®å®ããŠåäœãããããšãã§ããªãã£ãã
ä»å䜿çšããŠããæ€èšŒçšPCã¯ãWindows 11ã§ã¯ãããã®ã®ã10幎以äžåã®æ¯èŒçå€ãããŒããŠã§ã¢ã§ããã
ãã®ãããGPUç°å¢ãåæãšããæ§æã§ã¯ãªããCPUã®ã¿ã§å®å®åäœããç°å¢ãæ§ç¯ããæ¹éãžåãæ¿ããããšã«ããã
CPUçç°å¢ãåæ§ç¯ãã
詊è¡é¯èª€ãç¹°ãè¿ããçµæãPythonç°å¢ãã©ã€ãã©ãªã®æ§æãè€éã«ãªã£ãŠããŸã£ãã
åå ãåãåããããã«ããäžåºŠä»®æ³ç°å¢ãåé€ããCPUçPyTorchãå©çšããæ§æã§ç°å¢ãåæ§ç¯ããã
## ç°å¢æ§ç¯ã³ãã³ãïŒ
# 1. ãããžã§ã¯ãçšã®æ°ãããã©ã«ããäœãïŒå¿µã®ãããã¹ã¯ãããã«ïŒ
cd C:\Users\ïŒåã®ãŠãŒã¶ãŒåïŒ\Desktop
mkdir VGLL_SurfacePro
cd VGLL_SurfacePro
# 2. ä»®æ³ç°å¢ãäœæããŠæå¹å
python -m venv .venv
.venv\Scripts\Activate.ps1
# 3. pipãææ°ã«ããŠãã
python -m pip install --upgrade pip
# 4. PyTorch CPUçïŒå®å®çïŒãã€ã³ã¹ããŒã«
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
# 5. EasyOCRãã€ã³ã¹ããŒã«
pip install easyocr
# 6. ãã£ãã®spike.pyããã®ãã©ã«ãã«äœæã»ä¿åããŠå®è¡
python spike.py
ãã®æ§æã§ã¯ãspike.py ã®ã³ãŒãã倿Žããå¿
èŠã¯ãªãã
EasyOCRã¯å éšã§å©çšããPyTorchãèªåçã«èªèãããããCPUçãžåãæ¿ããåŸããåãã³ãŒãã®ãŸãŸåäœã確èªã§ããã
ããããŠç°å¢ãäžããèŠçŽããçµæãããããOCRãå®è¡ã§ããç¶æ ãŸã§ãã©ãçãããã§ã¯ãã²ãŒã ç»é¢ã¯å®éã«ã©ã®ããã«èªèãããã®ã ãããã
OCRã¯ã²ãŒã ç»é¢ãèªããã®ã
ç°å¢ãåæ§ç¯ããçµæãã€ãã«EasyOCRãå®è¡ã§ããç¶æ ãŸã§ãã©ãçããã
ä»åã®æ€èšŒã§ã¯ãã²ãŒã ç»é¢ã®ã¹ã¯ãªãŒã³ã·ã§ãããå ¥åããOCRãã©ã®çšåºŠæåãèªèã§ããã®ãã確èªããã
æ€èšŒã«äœ¿çšããç»å

OCRå®è¡ãã°
2026-07-07 18:43:50,638 - Detected: FINAL FANTASY V | Confidence: 0.93
2026-07-07 18:43:50,640 - Detected: WasSo | Confidence: 0.74
2026-07-07 18:43:50,640 - Detected: suipiisedwhenthecasilejustupandexploded,Ineailyjumped | Confidence: 0.64
2026-07-07 18:43:50,640 - Detected: outofmyskin} | Confidence: 0.33Confidence ã¯ãOCRãèªèçµæã«å¯ŸããŠã©ã®çšåºŠã®ç¢ºä¿¡ãæã£ãŠããããç€ºãææšã§ããã1.0ã«è¿ãã»ã©ããã®èªèçµæã«èªä¿¡ãããããšãæå³ããã
æ€èšŒçµæ
å®å šãªèªèãšã¯èšããªããã®ã®ãã²ãŒã ç»é¢ããæåæ å ±ãæœåºã§ããããšã¯ç¢ºèªã§ããã
ã¿ã€ãã«ããŽã® ãFINAL FANTASY Vã ã¯é«ãä¿¡é ŒåºŠã§èªèãããŠããäžæ¹ãäŒè©±ããã¹ãã«ã€ããŠã¯ã¹ããŒã¹ã®æ¬ èœãæåã®çµåã誀èªèãèŠãããã
ããã¯ã²ãŒã ç¹æã®ãã©ã³ããã¢ã³ããšã€ãªã¢ã¹ãèæ¯ç»åãšã®ã³ã³ãã©ã¹ããªã©ãOCRã«ãšã£ãŠèªèãé£ããæ¡ä»¶ãéãªã£ãŠããããã ãšèããããã
ããããä»åã®æ€èšŒã§éèŠãªã®ã¯100ïŒ æ£ç¢ºã«èªã¿åãããã©ããã§ã¯ãªãã
ã²ãŒã ç»é¢ãç»åãšããŠæ±ãã®ã§ã¯ãªããããã¹ãããŒã¿ãšããŠååŸã§ããããšã«å€§ããªæå³ãããã
OCRãæåãèªèã§ããããã«ãªã£ãããšã§ããã®ããŒã¿ã翻蚳ãèªç¶èšèªåŠçïŒNLPïŒãããã«ã¯åŠç¿å±¥æŽã®çæãžãšæŽ»çšã§ããå¯èœæ§ãèŠããŠããã
ãŸãšã
ä»åã®æ€èšŒã§ã¯ãEasyOCRãå©çšããŠã²ãŒã ç»é¢ããæåæ å ±ãæœåºãããããã¿ã€ããäœæããã
éçºäžã«ã¯PythonãšPyTorchã®äºææ§ãCUDAé¢é£ã®åé¡ãªã©ãããã€ãã®ç°å¢äŸåã®å£ã«ãçŽé¢ããããCPUçç°å¢ãåæ§ç¯ããããšã§OCRã®åäœç¢ºèªãŸã§å°éã§ããã
ãã¡ãããçŸæç¹ã§ã¯èªè粟床ã«èª²é¡ã¯æ®ã£ãŠããã
ã¹ããŒã¹ã®æ±ãã誀èªèãã²ãŒã ç¹æã®ãã©ã³ããžã®å¯Ÿå¿ãªã©ãå®çšåã«ã¯ãŸã æ¹åã®äœå°ãããã
ããã§ãããã²ãŒã ç»é¢ãç»åã§ã¯ãªãããã¹ããšããŠæ±ããããšããæåã®äžæ©ãèžã¿åºããããšã¯ãVGLLã®âçŒâããåããŠã²ãŒã ç»é¢ãèªãããšã«æåããã
次åã¯ç»åã®ååŠçãOCRã®èšå®ãèŠçŽããªãããã²ãŒã ç»é¢ã«é©ããèªè粟床ã®åäžãç®æããŠããã

