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: 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ả 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à
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:".