修复编码问题、允许修改port
This commit is contained in:
22
README.md
22
README.md
@@ -113,12 +113,20 @@ os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
|
||||
- 第一次使用该库读取、翻译非markdown文本
|
||||
- 第一次使用该库的公式识别或代码识别功能
|
||||
|
||||
## 使用图形化界面
|
||||
## 启动交互式界面
|
||||
|
||||
启动交互式界面
|
||||
|
||||
```commandline
|
||||
docutranslate -i
|
||||
```
|
||||
|
||||
启动交互式界面并指定端口
|
||||
|
||||
```commandline
|
||||
docutranslate -i -p 8011
|
||||
```
|
||||
|
||||
## 翻译文件
|
||||
|
||||
```python
|
||||
@@ -233,18 +241,22 @@ translater.translate_file(r"<要翻译的文件路径>",
|
||||
|
||||
# FAQ
|
||||
|
||||
1. 是否支持扫描件
|
||||
1. 8010端口被占用了怎么办
|
||||
|
||||
> 暂不支持
|
||||
> 可以通过设置系统环境变量`DOCUTRANSLATE_PORT=<port>`来指定启动端口
|
||||
|
||||
2. 第一次使用很慢是怎么回事
|
||||
2. 是否支持扫描件
|
||||
|
||||
> mineru解析引擎支持,docling不支持
|
||||
|
||||
3. 第一次使用很慢是怎么回事
|
||||
|
||||
> 第一次是使用时docling需要从huggingface下载转换输入文件为markdown的模型
|
||||
> 通过设置环境变量换源或科学上网可能有助于提高下载速度
|
||||
|
||||
> huggingface换源,请设置环境变量:`HF_ENDPOINT=https://hf-mirror.com`
|
||||
|
||||
3. 如何内网使用(不联网)
|
||||
4如何内网使用(不联网)
|
||||
|
||||
> 可以,对于docling提供的解析pdf、html等功能,可以使用以下方式提前下载所需的模型
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
__version__="0.2.39"
|
||||
__version__="0.2.40"
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import asyncio
|
||||
import io
|
||||
import logging
|
||||
import os
|
||||
import socket
|
||||
import time
|
||||
from contextlib import asynccontextmanager, closing
|
||||
@@ -482,8 +483,12 @@ def find_free_port(start_port):
|
||||
port += 1 # 端口被占用,尝试下一个端口
|
||||
|
||||
|
||||
def run_app(port=8010):
|
||||
def run_app(port:int|None=None):
|
||||
if port:
|
||||
initial_port = port
|
||||
else:
|
||||
env_port=os.environ.get("DOCUTRANSLATE_PORT")
|
||||
initial_port=int(env_port) if env_port else 8010
|
||||
try:
|
||||
# 首先检查初始端口是否可用
|
||||
port = find_free_port(initial_port)
|
||||
@@ -491,6 +496,7 @@ def run_app(port=8010):
|
||||
print(f"端口 {initial_port} 被占用,将使用端口 {port} 代替")
|
||||
print(f"正在启动 DocuTranslate WebUI 版本号:{__version__}")
|
||||
print(f"请用浏览器访问 http://127.0.0.1:{port} (部分终端可以使用ctrl+左键点击网址打开)")
|
||||
print(f"可以设置环境变量`DOCUTRANSLATE_PORT=<port>`改变默认服务端口号")
|
||||
uvicorn.run(app, host="127.0.0.1", port=port, workers=1)
|
||||
except Exception as e:
|
||||
print(f"启动失败: {e}")
|
||||
|
||||
@@ -16,7 +16,7 @@ def main():
|
||||
parser.add_argument(
|
||||
"-p", "--port",
|
||||
type=int, # 指定参数类型(例如整数)
|
||||
default=8010, # 默认值(可选)
|
||||
default=None, # 默认值(可选)
|
||||
help="指定端口号(默认:8010)。"
|
||||
)
|
||||
|
||||
@@ -51,15 +51,8 @@ def main():
|
||||
from docutranslate import __version__
|
||||
print(__version__)
|
||||
else:
|
||||
print("提示:若要启动 DocuTranslate 图形界面,请使用 -i 或 --interactive 选项。")
|
||||
print("\n用法示例:")
|
||||
print(" docutranslate -i")
|
||||
print(" docutranslate --interactive")
|
||||
print("\n如需查看所有可用选项,请运行:")
|
||||
print(" docutranslate --help")
|
||||
# 或者直接显示帮助信息:
|
||||
# parser.print_help()
|
||||
sys.exit(1) # 以错误码退出,表明命令未按预期执行
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -301,7 +301,7 @@ class FileTranslater:
|
||||
if embeded:
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
full_name = output_dir / filename.name
|
||||
with open(full_name, "w") as file:
|
||||
with open(full_name, "w", encoding="utf-8") as file:
|
||||
file.write(self.export_to_markdown())
|
||||
translater_logger.info(f"文件已写入{full_name.resolve()}")
|
||||
else:
|
||||
@@ -336,7 +336,7 @@ class FileTranslater:
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
full_name = output_dir / filename
|
||||
html_content = self.export_to_html(title=str(full_name.resolve().stem))
|
||||
with open(full_name, "w") as file:
|
||||
with open(full_name, "w",encoding="utf-8") as file:
|
||||
file.write(html_content)
|
||||
translater_logger.info(f"文件已写入{full_name.resolve()}")
|
||||
return self
|
||||
|
||||
@@ -196,7 +196,7 @@ def unembed_base64_images_to_zip(markdown:str,markdown_name:str,image_folder_nam
|
||||
f.write(base64.b64decode(b64data))
|
||||
return f""
|
||||
modified_md_content = re.sub(pattern, unembed_base64_images,markdown)
|
||||
with open(os.path.join(temp_dir,f"{markdown_name}"),"w") as f:
|
||||
with open(os.path.join(temp_dir,f"{markdown_name}"),"w",encoding="utf-8") as f:
|
||||
f.write(modified_md_content)
|
||||
zip_buffer=io.BytesIO()
|
||||
folder_path=Path(temp_dir)
|
||||
|
||||
Reference in New Issue
Block a user