Hướng dẫn PC Dùng Google Gemini để OCR

Thảo luận trong 'Hướng dẫn chung' bắt đầu bởi Numeron, 23/4/25 lúc 14:33.

  1. Numeron

    Numeron Lớp 5

    Về dùng Gemini để OCR thì ta có thể gửi ảnh rồi bảo Gemini, còn trong bài viết này mình chia sẻ code để xử lý hàng loạt cho cả một quyển sách.

    Về code
    Mình đã sử dụng Vibe Coding để viết một script Python cho phép thực hiện OCR trên toàn bộ hình ảnh trong một thư mục. Script này sử dụng Gemini 2.0 Flash, với tốc độ mặc định là 12 request mỗi phút. Tuy nhiên, bạn hoàn toàn có thể tùy chỉnh lại model (ví dụ dùng Gemini 2.5), thay đổi tốc độ gửi request, hoặc điều chỉnh prompt để nhận diện định dạng như in đậm, in nghiêng, xuất ra Markdown, hoặc tách cấu hình ra thành file riêng cho tiện quản lý.
    Lưu ý: Đây là script đơn giản được hỗ trợ bởi LLM nên đôi khi có thể gặp lỗi.

    Tham khảo thêm về model và giới hạn tốc độ tại: Vui lòng đăng nhập hoặc đăng ký để xem link

    Hướng dẫn sử dụng
    1. Chuẩn bị
    • Input: Thư mục chứa các file hình ảnh. Nếu bạn có file PDF, hãy xuất nó thành ảnh trước.
    • Cài đặt Python: Tải Python tại đây
    • Lấy API Key từ Google: Tạo API Key tại đây
    2. Cài đặt thư viện cần thiết:


    [​IMG]

    Cài:
    pip install requests python-dotenv
    Giải nén file đính kèm và mở, nó sẽ hỏi bạn api key và tên thư mục chứa các hình ảnh cần ocr.

    Ví dụ kết quả

    [​IMG]

    Uống nước uống tận nguồn.
    Một công trình khảo cứu dù tinh vi đến đâu cũng không thể nào thay thế được kinh văn cội gốc. Giỏi lắm chỉ là một bộ xương khô so với con người sống thật có linh hồn long lanh trong ánh mắt và tỏa ra trong hơi thở. Ấy là chưa kể những công trình phản bội, làm sai nghĩa chiếm đến chín mươi phần trăm số sách khảo cứu. Xin kể một thí dụ.
    Trước khi đọc những mảnh tàn văn của Parménide, triết gia vĩ đại phái Elée, tôi đã tìm hiểu qua những bộ triết sử và nghiên cứu của những học giả Tây phương đã thừa hưởng công trình vài chục thế kỷ. Đến khi bắt đầu đọc, tôi đi từ sửng sốt này đến sửng sốt khác vì mọi sách khảo cứu mà tôi được biết đều phản bội, lật ngược lại chủ ý sâu xa của Parménide, của phái Elée, một triết phái không để lại nhiều sách vở nhưng được coi là một trong những trường phái lớn của tư duy Hy Lạp, của thế giới Tây phương. Thời gian tôi dùng để đọc dăm trang khảo cứu là một vài giờ, còn đọc thẳng vào vài trang bản văn là
     

    Các file đính kèm:

    Wanderman, machine, amylee and 2 others like this.
  2. SCCBAV

    SCCBAV Lớp 5

    @Numeron có code nào cho dịch văn bản không bác
     
  3. Numeron

    Numeron Lớp 5

    dịch có thể dùng Immersive Translate
     
  4. trilv

    trilv Mầm non

    Dùng colab được không vậy bạn?
     
  5. nhat1395

    nhat1395 Lớp 7

    Colab dùng này ocr nhanh hơn, đỡ bị rate limit
    Vui lòng đăng nhập hoặc đăng ký để xem link
     
    eta128, trilv and Ikaika like this.
  6. SCCBAV

    SCCBAV Lớp 5

    Mình có cài và dùng thử rồi không ưng lắm, đang thấy Genimi 2.5 dịch khá tốt
     
  7. Numeron

    Numeron Lớp 5

    bạn có thể thiết lập để dùng gemini
     
  8. SCCBAV

    SCCBAV Lớp 5

    Chưa có hỗ trợ bản 2.5 ấy bác
     
  9. Lan Giao

    Lan Giao Lớp 7

    Mình rất quan tâm tới đoạn điều chỉnh prompt để xuất ra Markdown, bạn nói thêm về phần này đi.
     
  10. Numeron

    Numeron Lớp 5

    upload_2025-4-25_12-32-32.png
    sửa thành gemini-2.5-flash-preview-04-17
     
    SCCBAV thích bài này.
  11. Numeron

    Numeron Lớp 5

    bạn copy prompt của mình trong code (xem bằng dạng text), rồi bảo Gemini sửa lại theo ý bạn, ví dụ prompt mới mà mình bảo gemini sửa, có markdown:


    Please perform OCR on the image and return the cleaned, corrected text formatted strictly as Markdown. Follow these rules meticulously:

    1. **Reconstruct Paragraphs:** Combine text across incorrect line breaks to form flowing paragraphs. Maintain distinct paragraphs where appropriate (e.g., separated by significant whitespace in the original).
    2. **Identify and Format Headings:** Detect text that functions as headings (based on size, weight, centering, or spacing) and format them using Markdown heading syntax (`# Heading 1`, `## Heading 2`, etc.). Infer the appropriate heading level.
    3. **Identify and Format Emphasis:**
    * Detect **bold** text and format it using Markdown: `**bold text**`.
    * Detect *italic* text and format it using Markdown: `*italic text*`.
    4. **Handle Lists:**
    * Preserve numbered lists using standard Markdown format (e.g., `1. Item one`, `2. Item two`).
    * Preserve bulleted lists using standard Markdown format (e.g., `* Item one`, `- Item two`). Ensure list items flow correctly if they span multiple lines in the OCR source but belong to the same point.
    5. **Clean Artifacts:** Remove all page numbers, running headers, and footers.
    6. **Correct OCR Errors:** Fix common OCR mistakes, including character misinterpretations (like '1' for 'l', 'O' for '0'), punctuation errors, and incorrect diacritics if applicable based on the detected language (e.g., correct Vietnamese diacritics if Vietnamese text is detected).
    7. **Strict Output:** Output **only** the final, corrected Markdown text. Do **not** include any explanations, apologies, summaries, titles (unless it's a detected heading from the document), or introductory phrases like "Here is the Markdown text:".
     
  12. Lan Giao

    Lan Giao Lớp 7

    Mình thấy cách OCR bằng Google Gemini như bạn hướng dẫn khá ổn, không bị mất định dạng như vflat.
     
  13. SCCBAV

    SCCBAV Lớp 5

    thanks bác để thử
     

Chia sẻ trang này