|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM ubuntu:24.04 |
|
|
|
|
|
LABEL maintainer="MattyMroz" |
|
|
LABEL description="OneOCR — Windows DLL on Linux via Wine (100% accuracy)" |
|
|
|
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive |
|
|
ENV WINEDEBUG=-all |
|
|
|
|
|
|
|
|
RUN dpkg --add-architecture amd64 && \ |
|
|
apt-get update && \ |
|
|
apt-get install -y --no-install-recommends \ |
|
|
wine64 \ |
|
|
wine \ |
|
|
mingw-w64 \ |
|
|
python3 \ |
|
|
python3-pip \ |
|
|
python3-venv \ |
|
|
python3-dev \ |
|
|
&& \ |
|
|
apt-get clean && \ |
|
|
rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
|
|
|
RUN WINEPREFIX=/root/.wine WINEARCH=win64 wineboot --init 2>/dev/null; \ |
|
|
sleep 2 |
|
|
|
|
|
|
|
|
WORKDIR /app |
|
|
COPY . /app/ |
|
|
|
|
|
|
|
|
RUN python3 -m venv /app/.venv && \ |
|
|
/app/.venv/bin/pip install --no-cache-dir \ |
|
|
pillow \ |
|
|
numpy \ |
|
|
onnxruntime |
|
|
|
|
|
|
|
|
RUN x86_64-w64-mingw32-gcc -O2 \ |
|
|
-o /app/tools/oneocr_loader.exe \ |
|
|
/app/tools/oneocr_loader.c \ |
|
|
|| echo "Will compile on first run" |
|
|
|
|
|
|
|
|
RUN /app/.venv/bin/python -c "\ |
|
|
from tools.wine_bridge import WINE_LOADER_C; \ |
|
|
from pathlib import Path; \ |
|
|
Path('/app/tools/oneocr_loader.c').write_text(WINE_LOADER_C)" && \ |
|
|
x86_64-w64-mingw32-gcc -O2 \ |
|
|
-o /app/tools/oneocr_loader.exe \ |
|
|
/app/tools/oneocr_loader.c \ |
|
|
2>/dev/null || true |
|
|
|
|
|
|
|
|
ENV PATH="/app/.venv/bin:$PATH" |
|
|
ENV PYTHONPATH="/app" |
|
|
|
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ |
|
|
CMD python3 -c "from tools.wine_bridge import WineBridge; \ |
|
|
b = WineBridge(); c = b.check_requirements(); \ |
|
|
exit(0 if c.get('wine_found') else 1)" |
|
|
|
|
|
|
|
|
CMD ["python3", "main.py", "--help"] |
|
|
|