feat: 新增 OCRmyPDF 轉換引擎 (v0.1.14)
## 新功能 - OCRmyPDF 轉換引擎:將掃描版 PDF 轉換為可搜尋 PDF - 支援 7 種語言:en, zh-TW, zh, ja, ko, de, fr - 與 PDFMathTranslate 風格一致的 UI 格式 (pdf-<lang>) - 自動偵測頁面方向並旋轉 - 自動校正傾斜 - 跳過已有文字層的頁面 - 詳細的 5 階段處理進度輸出 ## 建置 - Dockerfile:安裝 ocrmypdf 與 Tesseract OCR 語言包 ## 文件 - 更新 OCR 功能文件 - 文件目錄結構改為中文名稱 ## 測試 - 修復 BabelDOC 和 PDFMathTranslate 測試的 OCR mock - 所有 345 個測試通過
This commit is contained in:
parent
f24eec070c
commit
a06df23b1d
53 changed files with 1427 additions and 675 deletions
179
docs/開發指南/專案結構.md
Normal file
179
docs/開發指南/專案結構.md
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
# 專案結構
|
||||
|
||||
本文件說明 ConvertX-CN 的程式碼結構與架構。
|
||||
|
||||
---
|
||||
|
||||
## 目錄結構
|
||||
|
||||
```
|
||||
ConvertX-CN/
|
||||
├── src/ # 前端原始碼
|
||||
│ ├── index.tsx # 主入口
|
||||
│ ├── main.css # 主樣式
|
||||
│ ├── components/ # React 元件
|
||||
│ ├── converters/ # 轉換器定義
|
||||
│ ├── db/ # 資料庫相關
|
||||
│ ├── helpers/ # 工具函數
|
||||
│ ├── i18n/ # 國際化
|
||||
│ ├── icons/ # 圖示元件
|
||||
│ ├── locales/ # 翻譯檔案
|
||||
│ ├── pages/ # 頁面元件
|
||||
│ ├── theme/ # 主題相關
|
||||
│ └── transfer/ # 檔案傳輸
|
||||
├── public/ # 靜態資源
|
||||
├── api-server/ # Rust API Server(選用)
|
||||
│ ├── src/ # Rust 原始碼
|
||||
│ ├── docs/ # API 文件
|
||||
│ └── tests/ # 測試
|
||||
├── docs/ # 文件
|
||||
├── tests/ # 測試
|
||||
├── scripts/ # 腳本
|
||||
├── data/ # 資料目錄(runtime)
|
||||
├── Dockerfile # Docker 建構檔
|
||||
├── compose.yaml # Docker Compose
|
||||
└── package.json # Node.js 依賴
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 技術棧
|
||||
|
||||
### 前端
|
||||
|
||||
| 技術 | 用途 |
|
||||
| ----------- | -------- |
|
||||
| Bun | Runtime |
|
||||
| Elysia | Web 框架 |
|
||||
| React | UI 元件 |
|
||||
| TailwindCSS | 樣式 |
|
||||
| TypeScript | 類型安全 |
|
||||
|
||||
### 後端 (Web UI)
|
||||
|
||||
| 技術 | 用途 |
|
||||
| ------ | -------- |
|
||||
| Bun | Runtime |
|
||||
| Elysia | Web 框架 |
|
||||
| SQLite | 資料庫 |
|
||||
|
||||
### API Server(選用)
|
||||
|
||||
| 技術 | 用途 |
|
||||
| ------------- | -------- |
|
||||
| Rust | 語言 |
|
||||
| Axum | Web 框架 |
|
||||
| async-graphql | GraphQL |
|
||||
|
||||
---
|
||||
|
||||
## 核心模組
|
||||
|
||||
### src/converters/
|
||||
|
||||
定義所有轉換器的設定與格式支援。
|
||||
|
||||
```
|
||||
converters/
|
||||
├── main.ts # 轉換器主邏輯
|
||||
├── types.ts # 類型定義
|
||||
├── ffmpeg.ts # FFmpeg 設定
|
||||
├── imagemagick.ts # ImageMagick 設定
|
||||
├── libreoffice.ts # LibreOffice 設定
|
||||
├── pandoc.ts # Pandoc 設定
|
||||
├── calibre.ts # Calibre 設定
|
||||
└── ...
|
||||
```
|
||||
|
||||
### src/i18n/
|
||||
|
||||
國際化模組,支援 65 種語言。
|
||||
|
||||
```
|
||||
i18n/
|
||||
├── index.ts # i18n 初始化
|
||||
└── service.ts # 語言服務
|
||||
```
|
||||
|
||||
### src/locales/
|
||||
|
||||
翻譯檔案,每個語言一個 JSON 檔案。
|
||||
|
||||
```
|
||||
locales/
|
||||
├── en.json # 英文
|
||||
├── zh-TW.json # 繁體中文
|
||||
├── zh-CN.json # 簡體中文
|
||||
├── ja.json # 日文
|
||||
└── ...
|
||||
```
|
||||
|
||||
### src/transfer/
|
||||
|
||||
檔案傳輸模組,處理上傳與下載。
|
||||
|
||||
```
|
||||
transfer/
|
||||
├── upload.ts # 上傳邏輯
|
||||
├── download.ts # 下載邏輯
|
||||
└── chunked.ts # 分段傳輸
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API Server 結構
|
||||
|
||||
```
|
||||
api-server/
|
||||
├── src/
|
||||
│ ├── main.rs # 入口
|
||||
│ ├── lib.rs # 模組定義
|
||||
│ ├── config.rs # 設定
|
||||
│ ├── auth.rs # JWT 認證
|
||||
│ ├── engine.rs # 引擎管理
|
||||
│ ├── conversion.rs# 轉換邏輯
|
||||
│ ├── rest.rs # REST API
|
||||
│ ├── graphql.rs # GraphQL API
|
||||
│ ├── models.rs # 資料模型
|
||||
│ └── error.rs # 錯誤處理
|
||||
├── tests/
|
||||
│ ├── api_tests.rs
|
||||
│ ├── graphql_tests.rs
|
||||
│ └── integration_tests.rs
|
||||
└── docs/
|
||||
├── API_SPEC.md
|
||||
└── ARCHITECTURE.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 資料流
|
||||
|
||||
### 檔案轉換流程
|
||||
|
||||
```
|
||||
1. 使用者上傳檔案
|
||||
↓
|
||||
2. 儲存到 data/uploads/
|
||||
↓
|
||||
3. 呼叫對應轉換器
|
||||
↓
|
||||
4. 輸出到 data/output/
|
||||
↓
|
||||
5. 使用者下載結果
|
||||
```
|
||||
|
||||
### 檔案傳輸策略
|
||||
|
||||
| 檔案大小 | 傳輸方式 | 說明 |
|
||||
| -------- | -------- | ------------ |
|
||||
| ≤ 10MB | 直接傳輸 | 單一請求完成 |
|
||||
| > 10MB | 分段傳輸 | 5MB chunks |
|
||||
|
||||
---
|
||||
|
||||
## 相關文件
|
||||
|
||||
- [本地開發](本地開發.md)
|
||||
- [貢獻指南](貢獻指南.md)
|
||||
- [測試策略](../測試/測試策略.md)
|
||||
Loading…
Add table
Add a link
Reference in a new issue