49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import sys
|
|
import io
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
|
|
print("Attempting Windows OCR...")
|
|
|
|
try:
|
|
import asyncio
|
|
from winsdk.windows.media.ocr import OcrEngine
|
|
from winsdk.windows.graphics.imaging import BitmapDecoder
|
|
from winsdk.windows.storage.streams import RandomAccessStreamReference
|
|
from winsdk.windows.globalization import Language
|
|
import os
|
|
|
|
async def ocr():
|
|
path = os.path.abspath(r"D:\Yuzu-GCA\screen2.png")
|
|
print(f"Opening: {path}")
|
|
|
|
# Try to get engine for Chinese
|
|
engine = OcrEngine.try_create_from_user_profile_languages()
|
|
if not engine:
|
|
print("No user profile languages, trying Chinese...")
|
|
engine = OcrEngine.try_create_from_language(Language("zh-Hans"))
|
|
if not engine:
|
|
print("Trying English...")
|
|
engine = OcrEngine.try_create_from_language(Language("en"))
|
|
|
|
if not engine:
|
|
print("No OCR engine available")
|
|
return
|
|
|
|
print(f"Using OCR engine: {engine.recognizer_language.display_name}")
|
|
|
|
file_stream = await RandomAccessStreamReference.create_from_file(path).open_read_async()
|
|
decoder = await BitmapDecoder.create_async(file_stream)
|
|
bitmap = await decoder.get_software_bitmap_async()
|
|
|
|
result = await engine.recognize_async(bitmap)
|
|
print(f"\n=== Windows OCR Result ({result.lines.size} lines) ===")
|
|
for line in result.lines:
|
|
print(line.text)
|
|
|
|
asyncio.run(ocr())
|
|
|
|
except ImportError as e:
|
|
print(f"winsdk not available: {e}")
|
|
except Exception as e:
|
|
print(f"Error: {e}")
|