{"library":"python-doctr","title":"Document Text Recognition (docTR)","description":"docTR (Document Text Recognition) is an open-source Python library leveraging deep learning for high-performance Optical Character Recognition (OCR) on documents. It provides state-of-the-art text detection and recognition for scanned documents, images, and PDFs. Actively maintained by Mindee, it supports multi-language recognition, handwriting, and GPU acceleration, currently at version 1.0.1.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install python-doctr","pip install \"python-doctr[viz,html,contrib]\"","pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118\npip install python-doctr"],"cli":null},"imports":["from doctr.io import DocumentFile","from doctr.models import ocr_predictor","from doctr.models import from_hub"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom doctr.io import DocumentFile\nfrom doctr.models import ocr_predictor\n\n# For demonstration, create a dummy image file if it doesn't exist\n# In a real scenario, you'd have an actual image or PDF path\ndummy_image_path = 'sample.png'\nif not os.path.exists(dummy_image_path):\n    try:\n        from PIL import Image\n        # Create a simple image with text\n        img = Image.new('RGB', (200, 100), color = (255, 255, 255))\n        from PIL import ImageDraw, ImageFont\n        d = ImageDraw.Draw(img)\n        try:\n            # Try a common font, or fallback\n            font = ImageFont.truetype(\"arial.ttf\", 20)\n        except IOError:\n            font = ImageFont.load_default()\n        d.text((10,10), \"Hello docTR!\", fill=(0,0,0), font=font)\n        img.save(dummy_image_path)\n        print(f\"Created dummy image: {dummy_image_path}\")\n    except ImportError:\n        print(\"Pillow not installed, cannot create dummy image. Please provide a real image file.\")\n        print(\"Skipping quickstart example as no image is available.\")\n        dummy_image_path = None\n\nif dummy_image_path and os.path.exists(dummy_image_path):\n    # Load your document (image or PDF)\n    # For a PDF: doc = DocumentFile.from_pdf(\"path/to/your/document.pdf\")\n    # For multiple images: doc = DocumentFile.from_images([\"path/to/img1.jpg\", \"path/to/img2.png\"])\n    doc = DocumentFile.from_images(dummy_image_path)\n\n    # Load a pre-trained OCR model\n    # Since v1.0.0, PyTorch is the default and only backend.\n    model = ocr_predictor(pretrained=True)\n\n    # Analyze the document\n    result = model(doc)\n\n    # Print the extracted text content\n    # The result object contains detailed information about words, lines, blocks, and pages.\n    print(\"\\n--- OCR Result ---\")\n    for page in result.pages:\n        for block in page.blocks:\n            for line in block.lines:\n                print(\" \".join([word.value for word in line.words]))\n\n    # You can also export the full structured output as JSON\n    # print(result.export())\nelse:\n    print(\"Quickstart skipped due to missing image.\")\n","lang":"python","description":"This quickstart demonstrates how to load an image, initialize a pre-trained OCR model, and extract text using docTR's core functionality. It leverages `DocumentFile` to handle input and `ocr_predictor` for the end-to-end OCR pipeline.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.10.0","pypi_latest":"1.0.1","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":85.3,"avg_import_s":null,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"viz,html,contrib","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"python-doctr","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"viz,html,contrib","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":98.7,"import_time_s":null,"mem_mb":null,"disk_size":"5.4G"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"python-doctr","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":93,"import_time_s":null,"mem_mb":null,"disk_size":"5.3G"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":105.9,"import_time_s":null,"mem_mb":null,"disk_size":"5.8G"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"viz,html,contrib","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"python-doctr","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"viz,html,contrib","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":97.5,"import_time_s":null,"mem_mb":null,"disk_size":"5.5G"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"python-doctr","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":86.2,"import_time_s":null,"mem_mb":null,"disk_size":"5.3G"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":96.5,"import_time_s":null,"mem_mb":null,"disk_size":"6.0G"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"viz,html,contrib","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"python-doctr","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"dependency_conflict","import_side_effects":null,"install_time_s":0.1,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"viz,html,contrib","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":90.4,"import_time_s":null,"mem_mb":null,"disk_size":"5.5G"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"python-doctr","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":88,"import_time_s":null,"mem_mb":null,"disk_size":"5.3G"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":92.2,"import_time_s":null,"mem_mb":null,"disk_size":"6.0G"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"viz,html,contrib","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"python-doctr","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"no_wheel","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"viz,html,contrib","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":87.6,"import_time_s":null,"mem_mb":null,"disk_size":"5.4G"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"python-doctr","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":84.3,"import_time_s":null,"mem_mb":null,"disk_size":"5.3G"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":100.6,"import_time_s":null,"mem_mb":null,"disk_size":"6.0G"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"viz,html,contrib","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":0.1,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"python-doctr","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"viz,html,contrib","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":34.9,"import_time_s":null,"mem_mb":null,"disk_size":"701M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"python-doctr","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":20.7,"import_time_s":null,"mem_mb":null,"disk_size":"518M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":102.8,"import_time_s":null,"mem_mb":null,"disk_size":"5.7G"}]}}