Demo: sist2.simon987.net
sist2 (Simple incremental search tool)
Warning: sist2 is in early development
- Fast, low memory usage, multi-threaded
- Mobile-friendly Web interface
- Portable (all its features are packaged in a single executable)
- Extracts text and metadata from common file types *
- Generates thumbnails *
- Incremental scanning
- Manual tagging from the UI and automatic tagging based on file attributes via user scripts
- Recursive scan inside archive files **
- OCR support with tesseract ***
- Stats page & disk utilisation visualization
* See format support
** See Archive files
*** See OCR
-
Have an Elasticsearch (>= 6.8.X, ideally >=7.14.0) instance running
- Download from official website
- (or) Run using docker:
docker run -d -p 9200:9200 -e "discovery.type=single-node" elasticsearch:7.14.0
- (or) Run using docker-compose:
elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 environment: - discovery.type=single-node - "ES_JAVA_OPTS=-Xms1G -Xmx2G"
-
Download sist2 executable
- Download the latest sist2 release.
Select the file corresponding to your CPU architecture and mark the binary as executable with
chmod +x
* - (or) Download a development snapshot (Not recommended!)
- (or)
docker pull simon987/sist2:2.12.1-x64-linux
- Download the latest sist2 release.
Select the file corresponding to your CPU architecture and mark the binary as executable with
-
See Usage guide
* Windows users: sist2 runs under WSL
See Usage guide for more details
- Scan a directory:
sist2 scan ~/Documents -o ./docs_idx
- Push index to Elasticsearch:
sist2 index ./docs_idx
- Start web interface:
sist2 web ./docs_idx
File type | Library | Content | Thumbnail | Metadata |
---|---|---|---|---|
pdf,xps,fb2,epub | MuPDF | text+ocr | yes | author, title |
cbz,cbr | libscan | - | yes | - |
audio/* |
ffmpeg | - | yes | ID3 tags |
video/* |
ffmpeg | - | yes | title, comment, artist |
image/* |
ffmpeg | ocr | yes | Common EXIF tags, GPS tags |
raw, rw2, dng, cr2, crw, dcr, k25, kdc, mrw, pef, xf3, arw, sr2, srf, erf | LibRaw | no | yes | Common EXIF tags, GPS tags |
ttf,ttc,cff,woff,fnt,otf | Freetype2 | - | yes, bmp |
Name & style |
text/plain |
libscan | yes | no | - |
html, xml | libscan | yes | no | - |
tar, zip, rar, 7z, ar ... | Libarchive | yes* | - | no |
docx, xlsx, pptx | libscan | yes | if embedded | creator, modified_by, title |
doc (MS Word 97-2003) | antiword | yes | no | author, title |
mobi, azw, azw3 | libmobi | yes | no | author, title |
wpd (WordPerfect) | libwpd | yes | no | planned |
json, jsonl, ndjson | libscan | yes | - | - |
* See Archive files
sist2 will scan files stored into archive files (zip, tar, 7z...) as if they were directly in the file system. Recursive (archives inside archives) scan is also supported.
Limitations:
- Support for parsing media files with formats that require seek (e.g.
.gif
,.mp4
w/ fragmented metadata etc.) is limitted (see--mem-buffer
option) - Archive files are scanned sequentially, by a single thread. On systems where sist2 is not I/O bound, scans might be faster when larger archives are split into smaller parts.
You can enable OCR support for ebook (pdf,xps,fb2,epub) or image file types with the
--ocr-lang <lang>
option in combination with --ocr-images
and/or --ocr-ebooks
.
Download the language data files with your package manager (apt install tesseract-ocr-eng
) or
directly from Github.
The simon987/sist2
image comes with common languages
(hin, jpn, eng, fra, rus, spa, chi_sim, deu) pre-installed.
You can use the +
separator to specify multiple languages. The language
name must be identical to the *.traineddata
file installed on your system
(use chi_sim
rather than chi-sim
).
Examples:
sist2 scan --ocr-ebooks --ocr-lang jpn ~/Books/Manga/
sist2 scan --ocr-images --ocr-lang eng ~/Images/Screenshots/
sist2 scan --ocr-ebooks --ocr-images --ocr-lang eng+chi_sim ~/Chinese-Bilingual/
You can compile sist2 by yourself if you don't want to use the pre-compiled binaries
git clone --recursive https://github.com/simon987/sist2/
cd sist2
docker build . -f ./Dockerfile -t my-sist2-image
docker run --rm --entrypoint cat my-sist2-image /root/sist2 > sist2-x64-linux
-
Install compile-time dependencies
apt install gcc g++ python3 yasm ragel automake autotools-dev wget libtool libssl-dev curl zip unzip tar xorg-dev libglu1-mesa-dev libxcursor-dev libxml2-dev libxinerama-dev gettext nasm git nodejs
-
Apply vcpkg patches, as per sist2-build Dockerfile
-
Install vcpkg dependencies
vcpkg install curl[core,openssl] vcpkg install lmdb cjson glib brotli libarchive[core,bzip2,libxml2,lz4,lzma,lzo] pthread tesseract libxml2 libmupdf gtest mongoose libmagic libraw jasper lcms gumbo
-
Build
git clone --recursive https://github.com/simon987/sist2/ (cd sist2-vue; npm install; npm run build) (cd sist2-admin/frontend; npm install; npm run build) cmake -DSIST_DEBUG=off -DCMAKE_TOOLCHAIN_FILE=<VCPKG_ROOT>/scripts/buildsystems/vcpkg.cmake . make