0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Dùng Ollama Để Dịch Điện Tử Hóa Sách

Đăng vào 6 tháng trước

• 6 phút đọc

Chủ đề:

KungFuTech

Giới thiệu

Trong thời đại công nghệ số hiện nay, việc dịch và chuyển đổi tài liệu điện tử thành các định dạng dễ tiếp cận hơn là rất quan trọng. Bài viết này sẽ hướng dẫn bạn cách sử dụng mô hình Ollama để dịch sách điện tử sang tiếng Việt một cách hiệu quả và miễn phí.

Mục tiêu của bài viết

  • Hiểu rõ cách triển khai mô hình Ollama trên máy tính cá nhân.
  • Học cách trích xuất nội dung từ các định dạng sách điện tử như PDF và EPUB.
  • Thực hiện dịch nội dung và lưu thành file PDF.

Nội dung bài viết

  1. Giới thiệu về Ollama và cách cài đặt
  2. Cấu trúc mã nguồn
  3. Thực hiện dịch sách điện tử
  4. Thực hành: Ví dụ mã nguồn
  5. Thực tiễn tốt nhất
  6. Câu hỏi thường gặp

Giới thiệu về Ollama và cách cài đặt

Ollama là một mô hình ngôn ngữ mạnh mẽ cho phép người dùng thực hiện các tác vụ dịch thuật mà không tốn kém chi phí. Để sử dụng Ollama, bạn cần cài đặt nó trên máy tính của mình. Dưới đây là hướng dẫn cài đặt:

Cài đặt Ollama

  1. Tải xuống và cài đặt Ollama từ trang chính thức.
  2. Mở terminal và chạy lệnh sau để khởi động Ollama:
    bash Copy
    ollama serve
  3. Kiểm tra xem Ollama đã hoạt động bằng cách truy cập vào địa chỉ http://localhost:11434.

Cấu trúc mã nguồn

Mã nguồn dưới đây sẽ giúp bạn hiểu rõ hơn về cách mà mô hình Ollama được tích hợp vào quy trình dịch sách điện tử.

python Copy
import requests
import json
from PyPDF2 import PdfReader
from fpdf import FPDF
from ebooklib import epub
from bs4 import BeautifulSoup

# Địa chỉ API của Ollama
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "qwen2.5:7b"  # Tên mô hình

class PDF(FPDF):
    def __init__(self):
        super().__init__()
        self.add_font('kaiti', '', './kaiti.ttf', uni=True)

    def footer(self):
        self.set_y(-15)
        self.set_font('kaiti', '', 8)
        self.cell(0, 10, f'Trang {self.page_no()}', 0, 0, 'C')

class Topdf:
    def __init__(self, pdf_path, txt_file_path):
        self.pdf_file = pdf_path
        self.txt_file = txt_file_path

    def to_pdf_from_text_file(self):
        pdf = PDF()
        pdf.set_left_margin(10)
        pdf.set_right_margin(10)
        pdf.add_page()
        pdf.set_auto_page_break(auto=True, margin=15)
        pdf.set_font('kaiti', '', 12)
        with open(self.txt_file, 'r', encoding='utf-8') as file:
            text = file.read()
        pdf.multi_cell(0, 10, text)
        pdf.output(self.pdf_file)

class Translate:
    def __init__(self, source_origin_book_name):
        self.file_path = source_origin_book_name
        self.output_txt = "output_translated.txt"
        self.output_pdf = "output_translated.pdf"

    def extract_text_from_pdf_translate(self):
        reader = PdfReader(self.file_path)
        text = ""
        for num, page in enumerate(reader.pages, start=1):
            page_text = page.extract_text().strip()
            if page_text:
                chinese = self.translate(page_text)
                if chinese:
                    text += f'{chinese}\n'
        return text

    def translate(self, text_origin):
        try:
            payload = {
                "model": MODEL_NAME,
                "prompt": f"Dịch sang tiếng Việt: {text_origin}",
                "stream": False
            }
            response = requests.post(OLLAMA_URL, json=payload)
            if response.status_code == 200:
                return response.json().get("response", "")
        except Exception as e:
            return None

    def save_to_pdf(self, text):
        with open(self.output_txt, 'w', encoding='utf-8') as f:
            f.write(text)
        Topdf(self.output_pdf, self.output_txt).to_pdf_from_text_file()

    def run(self):
        text = self.extract_text_from_pdf_translate()
        if text:
            self.save_to_pdf(text)

if __name__ == '__main__':
    source_origin_book_name = "Games people play.pdf"
    Translate(source_origin_book_name).run()

Thực hiện dịch sách điện tử

Bước 1: Trích xuất văn bản từ PDF

Bạn có thể trích xuất nội dung từ một file PDF và gửi tới mô hình Ollama để dịch. Dưới đây là ví dụ về cách thực hiện:

Bước 2: Dịch nội dung

Khi nội dung được trích xuất, bạn sẽ gọi phương thức translate để dịch văn bản.

Bước 3: Lưu kết quả vào PDF

Kết quả dịch sẽ được lưu lại vào file PDF mới tạo.

Thực hành: Ví dụ mã nguồn

Mã nguồn trên đây đã được viết để bạn có thể dễ dàng hiểu và áp dụng. Hãy thử nghiệm với các file PDF của bạn và xem kết quả!

Thực tiễn tốt nhất

  • Kiểm tra đầu vào: Đảm bảo rằng file PDF có thể đọc được trước khi tiến hành dịch.
  • Quản lý lỗi: Xử lý các tình huống khi mô hình không trả về kết quả như mong đợi.
  • Tối ưu hóa: Thực hiện tối ưu hóa mã nguồn để nâng cao hiệu suất dịch.

Câu hỏi thường gặp

Mô hình Ollama có miễn phí không?

Mô hình Ollama có thể được sử dụng miễn phí trên máy tính cá nhân.

Có thể dịch nhiều định dạng khác ngoài PDF không?

Có, bạn có thể mở rộng mã nguồn để hỗ trợ các định dạng khác như EPUB.

Kết luận

Việc sử dụng Ollama để dịch sách điện tử không chỉ tiết kiệm chi phí mà còn giúp bạn dễ dàng tiếp cận với nhiều tài liệu hơn. Hãy thử nghiệm ngay hôm nay và chia sẻ kinh nghiệm của bạn với cộng đồng lập trình viên!

Call to Action

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè và theo dõi chúng tôi để cập nhật thêm nhiều kiến thức hữu ích khác!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào