简介
paperless-ngx 是一个开源的文档管理系统,旨在帮助用户将纸质文件数字化并进行高效管理。它允许用户通过扫描、上传 PDF 或图片,将文件自动分类、索引,并支持全文搜索和标签管理。项目的核心目标是让“无纸化办公”变得简单和自动化。
对于我来说最主要就是文件上传之后就会自动ocr,然后我想要一些文件的时候,直接搜索就可以,很方便
部署
我直接给个deployment.yaml
应该就可以
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: paperless-ngx
namespace: app
spec:
selector:
matchLabels:
app: paperless-ngx
serviceName: paperless-ngx
replicas: 1
template:
metadata:
labels:
app: paperless-ngx
spec:
initContainers:
- name: install-tessdata
image: ghcr.io/astral-sh/uv:0.7.9-python3.12-bookworm-slim
command:
- sh
- -c
- |
apt-get update && \
apt-get install -y tesseract-ocr-chi-sim && \
cp -r /usr/share/tesseract-ocr/5/tessdata/* /tessdata/
volumeMounts:
- name: tesseract-lang
mountPath: /tessdata
containers:
- name: paperless-ngx
image: ghcr.io/paperless-ngx/paperless-ngx:2.17.1
ports:
- containerPort: 8000
name: web
env:
- name: TZ
value: Asia/Shanghai
- name: PAPERLESS_REDIS
value: redis://:passwd@redis:6379
- name: PAPERLESS_DBHOST
value: postgresql
- name: PAPERLESS_URL
value: https://xxxx.xxxx.com
- name: PAPERLESS_SECRET_KEY
value: xxxxxxxxx
- name: PAPERLESS_TIME_ZONE
value: Asia/Shanghai
- name: PAPERLESS_OCR_LANGUAGE
value: chi_sim
- name: PAPERLESS_OCR_LANGUAGES
value: eng,chi_tra
- name: PAPERLESS_DBUSER
value: postgres
- name: PAPERLESS_DBPASS
value: xxxxxxxxxxx
volumeMounts:
- name: tesseract-lang
mountPath: /usr/share/tesseract-ocr/5/tessdata
- name: data
mountPath: /usr/src/paperless/data
subpath: data
- name: data
mountPath: /usr/src/paperless/media
subpath: media
- name: data
mountPath: /usr/src/paperless/export
subpath: export
- name: data
mountPath: /usr/src/paperless/consume
subpath: consume
- name: timezone
mountPath: /etc/localtime # 挂载到容器的目录
volumes:
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
- name: tesseract-lang
emptyDir: {}
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100Gi
要注意
- name: install-tessdata
image: ghcr.io/astral-sh/uv:0.7.9-python3.12-bookworm-slim
command:
- sh
- -c
- |
apt-get update && \
apt-get install -y tesseract-ocr-chi-sim && \
cp -r /usr/share/tesseract-ocr/5/tessdata/* /tessdata/
volumeMounts:
- name: tesseract-lang
mountPath: /tessdata
介绍下Tesseract OCR
tesseract-ocr-chi-sim 是 Tesseract OCR 的简体中文语言包。Tesseract 是一个开源的光学字符识别(OCR)引擎,支持多种语言的文字识别。默认情况下,Tesseract 只包含英文语言包,如果需要识别中文(简体),就需要额外安装 tesseract-ocr-chi-sim。
所以镜像里面默认是没有tesseract-ocr-chi-sim的,需要手动安装,但是我又不想去修改镜像,所以就使用了initContainers
去安装
之后就是各种环境变量
TZ
:设置容器时区,这里设置为Asia/Shanghai
,保证日志和系统时间一致。PAPERLESS_REDIS
:Redis 连接地址,格式为redis://:密码@主机:端口
,用于缓存和任务队列。PAPERLESS_DBHOST
:PostgreSQL 数据库主机名。PAPERLESS_DBUSER
/PAPERLESS_DBPASS
:数据库用户名和密码。PAPERLESS_URL
:服务的外部访问地址,建议配置为你的域名或公网地址。PAPERLESS_SECRET_KEY
:Django 项目的密钥,建议用随机字符串,保证安全。PAPERLESS_TIME_ZONE
:Paperless-ngx 的时区设置,建议和TZ
保持一致。PAPERLESS_OCR_LANGUAGE
:默认 OCR 语言,比如chi_sim
表示简体中文。PAPERLESS_OCR_LANGUAGES
:支持的 OCR 语言列表,用逗号分隔,比如eng,chi_tra
表示英文和繁体中文。
其他
我觉得这个项目已经很可以了,如果想要其他项目,可以关注下
https://github.com/papra-hq/papra
欢迎关注我的博客www.bboy.app
Have Fun