[English](../README.md) | [简体中文](README_zh-CN.md) | 日本語 PDF2ZH

PDFMathTranslate

Byaidu%2FPDFMathTranslate | Trendshift
科学 PDF 文書の翻訳およびバイリンガル比較ツール - 📊 数式、チャート、目次、注釈を保持 *([プレビュー](#preview))* - 🌐 [複数の言語](#language) と [多様な翻訳サービス](#services) をサポート - 🤖 [コマンドラインツール](#usage)、[インタラクティブユーザーインターフェース](#gui)、および [Docker](#docker) を提供 フィードバックは [GitHub Issues](https://github.com/Byaidu/PDFMathTranslate/issues)、[Telegram グループ](https://t.me/+Z9_SgnxmsmA5NzBl) または [QQ グループ](https://qm.qq.com/q/DixZCxQej0) でお気軽にどうぞ

最近の更新

- [2024年11月26日] CLIがオンラインファイルをサポートするようになりました *(by [@reycn](https://github.com/reycn))* - [2024年11月24日] 依存関係のサイズを削減するために [ONNX](https://github.com/onnx/onnx) サポートを追加しました *(by [@Wybxc](https://github.com/Wybxc))* - [2024年11月23日] 🌟 [公共サービス](#demo) がオンラインになりました! *(by [@Byaidu](https://github.com/Byaidu))* - [2024年11月23日] ウェブボットを防ぐためのファイアウォールを追加しました *(by [@Byaidu](https://github.com/Byaidu))* - [2024年11月22日] GUIがイタリア語をサポートし、改善されました *(by [@Byaidu](https://github.com/Byaidu), [@reycn](https://github.com/reycn))* - [2024年11月22日] デプロイされたサービスを他の人と共有できるようになりました *(by [@Zxis233](https://github.com/Zxis233))* - [2024年11月22日] Tencent翻訳をサポートしました *(by [@hellofinch](https://github.com/hellofinch))* - [2024年11月21日] GUIがバイリンガルドキュメントのダウンロードをサポートするようになりました *(by [@reycn](https://github.com/reycn))* - [2024年11月20日] 🌟 [デモ](#demo) がオンラインになりました! *(by [@reycn](https://github.com/reycn))*

プレビュー

公共サービス 🌟

### 無料サービス () インストールなしで [公共サービス](https://pdf2zh.com/) をオンラインで試すことができます。 ### デモ インストールなしで [HuggingFace上のデモ](https://huggingface.co/spaces/reycn/PDFMathTranslate-Docker), [ModelScope上のデモ](https://www.modelscope.cn/studios/AI-ModelScope/PDFMathTranslate) を試すことができます。 デモの計算リソースは限られているため、乱用しないようにしてください。

インストールと使用方法

このプロジェクトを使用するための4つの方法を提供しています:[コマンドライン](#cmd)、[ポータブル](#portable)、[GUI](#gui)、および [Docker](#docker)。 pdf2zhの実行には追加モデル(`wybxc/DocLayout-YOLO-DocStructBench-onnx`)が必要です。このモデルはModelScopeでも見つけることができます。起動時にこのモデルのダウンロードに問題がある場合は、以下の環境変数を使用してください: ```shell set HF_ENDPOINT=https://hf-mirror.com ```

方法1. コマンドライン

1. Pythonがインストールされていること (バージョン3.8 <= バージョン <= 3.12) 2. パッケージをインストールします: ```bash pip install pdf2zh ``` 3. 翻訳を実行し、[現在の作業ディレクトリ](https://chatgpt.com/share/6745ed36-9acc-800e-8a90-59204bd13444) にファイルを生成します: ```bash pdf2zh document.pdf ```

方法2. ポータブル

Python環境を事前にインストールする必要はありません [setup.bat](https://raw.githubusercontent.com/Byaidu/PDFMathTranslate/refs/heads/main/script/setup.bat) をダウンロードしてダブルクリックして実行します

方法3. GUI

1. Pythonがインストールされていること (バージョン3.8 <= バージョン <= 3.12) 2. パッケージをインストールします: ```bash pip install pdf2zh ``` 3. ブラウザで使用を開始します: ```bash pdf2zh -i ``` 4. ブラウザが自動的に起動しない場合は、次のURLを開きます: ```bash http://localhost:7860/ ``` 詳細については、[GUIのドキュメント](./docs/README_GUI.md) を参照してください。

方法4. Docker

1. プルして実行します: ```bash docker pull byaidu/pdf2zh docker run -d -p 7860:7860 byaidu/pdf2zh ``` 2. ブラウザで開きます: ``` http://localhost:7860/ ``` クラウドサービスでのDockerデプロイメント用:
Deploy Deploy to Koyeb Deploy on Zeabur Deploy to Koyeb

高度なオプション

コマンドラインで翻訳コマンドを実行し、現在の作業ディレクトリに翻訳されたドキュメント `example-mono.pdf` とバイリンガルドキュメント `example-dual.pdf` を生成します。デフォルトではGoogle翻訳サービスを使用します。 cmd 以下の表に、参考のためにすべての高度なオプションをリストしました: | オプション | 機能 | 例 | | -------- | ------- |------- | | files | ローカルファイル | `pdf2zh ~/local.pdf` | | links | オンラインファイル | `pdf2zh http://arxiv.org/paper.pdf` | | `-i` | [GUIに入る](#gui) | `pdf2zh -i` | | `-p` | [部分的なドキュメント翻訳](#partial) | `pdf2zh example.pdf -p 1` | | `-li` | [ソース言語](#languages) | `pdf2zh example.pdf -li en` | | `-lo` | [ターゲット言語](#languages) | `pdf2zh example.pdf -lo zh` | | `-s` | [翻訳サービス](#services) | `pdf2zh example.pdf -s deepl` | | `-t` | [マルチスレッド](#threads) | `pdf2zh example.pdf -t 1` | | `-o` | 出力ディレクトリ | `pdf2zh example.pdf -o output` | | `-f`, `-c` | [例外](#exceptions) | `pdf2zh example.pdf -f "(MS.*)"` | | `--share` | [gradio公開リンクを取得] | `pdf2zh -i --share` | | `--authorized` | [ウェブ認証とカスタム認証ページの追加] | `pdf2zh -i --authorized users.txt [auth.html]` | | `--prompt` | [カスタムビッグモデルのプロンプトを使用する] | `pdf2zh --prompt [prompt.txt]` |

全文または部分的なドキュメント翻訳

- **全文翻訳** ```bash pdf2zh example.pdf ``` - **部分翻訳** ```bash pdf2zh example.pdf -p 1-3,5 ```

ソース言語とターゲット言語を指定

[Google Languages Codes](https://developers.google.com/admin-sdk/directory/v1/languages)、[DeepL Languages Codes](https://developers.deepl.com/docs/resources/supported-languages) を参照してください ```bash pdf2zh example.pdf -li en -lo ja ```

異なるサービスで翻訳

以下の表は、各翻訳サービスに必要な [環境変数](https://chatgpt.com/share/6734a83d-9d48-800e-8a46-f57ca6e8bcb4) を示しています。各サービスを使用する前に、これらの変数を設定してください。 |**Translator**|**Service**|**Environment Variables**|**Default Values**|**Notes**| |-|-|-|-|-| |**Google (Default)**|`google`|None|N/A|None| |**Bing**|`bing`|None|N/A|None| |**DeepL**|`deepl`|`DEEPL_AUTH_KEY`|`[Your Key]`|See [DeepL](https://support.deepl.com/hc/en-us/articles/360020695820-API-Key-for-DeepL-s-API)| |**DeepLX**|`deeplx`|`DEEPLX_ENDPOINT`|`https://api.deepl.com/translate`|See [DeepLX](https://github.com/OwO-Network/DeepLX)| |**Ollama**|`ollama`|`OLLAMA_HOST`, `OLLAMA_MODEL`|`http://127.0.0.1:11434`, `gemma2`|See [Ollama](https://github.com/ollama/ollama)| |**OpenAI**|`openai`|`OPENAI_BASE_URL`, `OPENAI_API_KEY`, `OPENAI_MODEL`|`https://api.openai.com/v1`, `[Your Key]`, `gpt-4o-mini`|See [OpenAI](https://platform.openai.com/docs/overview)| |**AzureOpenAI**|`azure-openai`|`AZURE_OPENAI_BASE_URL`, `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_MODEL`|`[Your Endpoint]`, `[Your Key]`, `gpt-4o-mini`|See [Azure OpenAI](https://learn.microsoft.com/zh-cn/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line%2Cjavascript-keyless%2Ctypescript-keyless%2Cpython&pivots=programming-language-python)| |**Zhipu**|`zhipu`|`ZHIPU_API_KEY`, `ZHIPU_MODEL`|`[Your Key]`, `glm-4-flash`|See [Zhipu](https://open.bigmodel.cn/dev/api/thirdparty-frame/openai-sdk)| | **ModelScope** | `ModelScope` |`MODELSCOPE_API_KEY`, `MODELSCOPE_MODEL`|`[Your Key]`, `Qwen/Qwen2.5-Coder-32B-Instruct`| See [ModelScope](https://www.modelscope.cn/docs/model-service/API-Inference/intro)| |**Silicon**|`silicon`|`SILICON_API_KEY`, `SILICON_MODEL`|`[Your Key]`, `Qwen/Qwen2.5-7B-Instruct`|See [SiliconCloud](https://docs.siliconflow.cn/quickstart)| |**Gemini**|`gemini`|`GEMINI_API_KEY`, `GEMINI_MODEL`|`[Your Key]`, `gemini-1.5-flash`|See [Gemini](https://ai.google.dev/gemini-api/docs/openai)| |**Azure**|`azure`|`AZURE_ENDPOINT`, `AZURE_API_KEY`|`https://api.translator.azure.cn`, `[Your Key]`|See [Azure](https://docs.azure.cn/en-us/ai-services/translator/text-translation-overview)| |**Tencent**|`tencent`|`TENCENTCLOUD_SECRET_ID`, `TENCENTCLOUD_SECRET_KEY`|`[Your ID]`, `[Your Key]`|See [Tencent](https://www.tencentcloud.com/products/tmt?from_qcintl=122110104)| |**Dify**|`dify`|`DIFY_API_URL`, `DIFY_API_KEY`|`[Your DIFY URL]`, `[Your Key]`|See [Dify](https://github.com/langgenius/dify),Three variables, lang_out, lang_in, and text, need to be defined in Dify's workflow input.| |**AnythingLLM**|`anythingllm`|`AnythingLLM_URL`, `AnythingLLM_APIKEY`|`[Your AnythingLLM URL]`, `[Your Key]`|See [anything-llm](https://github.com/Mintplex-Labs/anything-llm)| `-s service` または `-s service:model` を使用してサービスを指定します: ```bash pdf2zh example.pdf -s openai:gpt-4o-mini ``` または環境変数でモデルを指定します: ```bash set OPENAI_MODEL=gpt-4o-mini pdf2zh example.pdf -s openai ```

例外を指定して翻訳

正規表現を使用して保持する必要がある数式フォントと文字を指定します: ```bash pdf2zh example.pdf -f "(CM[^RT].*|MS.*|.*Ital)" -c "(\(|\||\)|\+|=|\d|[\u0080-\ufaff])" ``` デフォルトで `Latex`、`Mono`、`Code`、`Italic`、`Symbol` および `Math` フォントを保持します: ```bash pdf2zh example.pdf -f "(CM[^R]|(MS|XY|MT|BL|RM|EU|LA|RS)[A-Z]|LINE|LCIRCLE|TeX-|rsfs|txsy|wasy|stmary|.*Mono|.*Code|.*Ital|.*Sym|.*Math)" ```

スレッド数を指定

`-t` を使用して翻訳に使用するスレッド数を指定します: ```bash pdf2zh example.pdf -t 1 ```

custom prompt

(need Japenese translation) Use `--prompt` to specify which prompt to use in llm: ```bash pdf2zh example.pdf -pr prompt.txt ``` example prompt.txt ``` [ { "role": "system", "content": "You are a professional,authentic machine translation engine.", }, { "role": "user", "content": "Translate the following markdown source text to ${lang_out}. Keep the formula notation {{v*}} unchanged. Output translation directly without any additional text.\nSource Text: ${text}\nTranslated Text:", }, ] ``` In custom prompt file, there are three variables can be used. |**variables**|**comment**| |-|-| |`lang_in`|input language| |`lang_out`|output language| |`text`|text need to be translated|

API

### Python ```python from pdf2zh import translate, translate_stream params = {"lang_in": "en", "lang_out": "zh", "service": "google", "thread": 4} file_mono, file_dual = translate(files=["example.pdf"], **params)[0] with open("example.pdf", "rb") as f: stream_mono, stream_dual = translate_stream(stream=f.read(), **params) ``` ### HTTP ```bash pip install pdf2zh[backend] pdf2zh --flask pdf2zh --celery worker ``` ```bash curl http://localhost:11008/v1/translate -F "file=@example.pdf" -F "data={\"lang_in\":\"en\",\"lang_out\":\"zh\",\"service\":\"google\",\"thread\":4}" {"id":"d9894125-2f4e-45ea-9d93-1a9068d2045a"} curl http://localhost:11008/v1/translate/d9894125-2f4e-45ea-9d93-1a9068d2045a {"info":{"n":13,"total":506},"state":"PROGRESS"} curl http://localhost:11008/v1/translate/d9894125-2f4e-45ea-9d93-1a9068d2045a {"state":"SUCCESS"} curl http://localhost:11008/v1/translate/d9894125-2f4e-45ea-9d93-1a9068d2045a/mono --output example-mono.pdf curl http://localhost:11008/v1/translate/d9894125-2f4e-45ea-9d93-1a9068d2045a/dual --output example-dual.pdf curl http://localhost:11008/v1/translate/d9894125-2f4e-45ea-9d93-1a9068d2045a -X DELETE ```

謝辞

- ドキュメントのマージ:[PyMuPDF](https://github.com/pymupdf/PyMuPDF) - ドキュメントの解析:[Pdfminer.six](https://github.com/pdfminer/pdfminer.six) - ドキュメントの抽出:[MinerU](https://github.com/opendatalab/MinerU) - ドキュメントプレビュー:[Gradio PDF](https://github.com/freddyaboulton/gradio-pdf) - マルチスレッド翻訳:[MathTranslate](https://github.com/SUSYUSTC/MathTranslate) - レイアウト解析:[DocLayout-YOLO](https://github.com/opendatalab/DocLayout-YOLO) - ドキュメント標準:[PDF Explained](https://zxyle.github.io/PDF-Explained/)、[PDF Cheat Sheets](https://pdfa.org/resource/pdf-cheat-sheets/) - 多言語フォント:[Go Noto Universal](https://github.com/satbyy/go-noto-universal)

貢献者

![Alt](https://repobeats.axiom.co/api/embed/dfa7583da5332a11468d686fbd29b92320a6a869.svg "Repobeats analytics image")

スター履歴

Star History Chart