PDFMathTranslate is a production-grade CLI and GUI application for translating PDF documents while preserving scientific formatting (formulas, charts, tables, and fonts). It uses an ONNX-based layout detection model (DocLayout-YOLO) to understand document structure, supports OCR for scanned PDFs, and integrates with numerous translation services (Google, DeepL, OpenAI, Ollama, etc.). The system operates as a monolithic package with multiple entry points: a command-line tool, a Gradio web interface, a Flask+ Celery HTTP API, and an MCP server for AI assistant integration. Internally, it follows a pipeline architecture: input PDF β optional OCR β layout analysis β text extraction β translation (with caching) β typesetting β bilingual output PDF. Notable engineering patterns include a pluggable translation backend via a kernel registry, a configurable translator base class with retry and caching, and a singleton configuration manager. The code is well-structured with test coverage and CI/CD pipelines, though the dependency on a Git submodule for the 'precise' kernel introduces minor coupling risk.
This repository provides a fully-featured, cross-platform document reader and annotator for PDF, EPUB, and HTML snapshots, used as the core reading interface within the Zotero reference management ecosystem. It integrates PDF.js and EPUB.js for rendering, and a custom Structured Document Text (SDT) pipeline for cross-format search, reading mode (reflow), and read-aloud (TTS) with both browser-native and remote voice providers. The architecture is modular: a platform-agnostic common layer defines core abstractions (View, AnnotationManager, FocusManager, KeyboardManager, ReaderUI), with platform-specific bindings for Zotero desktop, web, iOS WebKit, and Android. The UI is built with React and features annotation tools (highlight, underline, note, ink, image, text), sidebar with thumbnails/annotations/outline, find-in-document via a web worker, and extensive keyboard navigation. Annotation management supports undo/redo, debounced saving, filtering, and export. The codebase demonstrates strong engineering practices with reusable design patterns (LRU cache, approximate string matching, navigation history, popup delay), but also contains large monolithic controller classes (Reader, PDFView) that handle many responsibilities. Overall, it is a high-quality, actively maintained application with sophisticated document processing capabilities.
This repository is a collection of Zotero translators designed to extract bibliographic metadata from Chinese academic and research websites, enabling users to save references from sources like CNKI, Wanfang, CQVIP, and others directly into the Zotero reference manager. Each translator is a self-contained JavaScript file that implements detection, data extraction, and test cases for a specific website or database. The repository includes infrastructure for maintaining translator quality, featuring a custom ESLint plugin that validates translator headers, enforces coding standards, and checks for compatibility with the Zotero framework. Continuous integration workflows run linting and browser tests to ensure translators function correctly, while a metadata processing script generates summary data for a translator dashboard. While the translators themselves are website-specific and not directly reusable, the ESLint plugin represents a reusable component that can be extracted to validate Zotero translators in other projects. The translators follow a consistent structure with labeled data extraction patterns and extra field handling, demonstrating solid engineering practices for web scraping in the Zotero ecosystem.
ZotLit is a dual-plugin system (Obsidian plugin + Zotero addon) that bridges Zotero's reference management with Obsidian's note-taking environment. It enables users to create literature notes from Zotero items, insert formatted citations, import annotations, and export documents via Pandoc β all within Obsidian. The system is a monorepo with three main applications: an Obsidian plugin (apps/obsidian) that provides views (annotation sidebar, references panel, citation popover, template data explorer), services (citation indexing, live updates from Zotero, Pandoc integration, note creation/update), and a settings tab; a Zotero addon (apps/zotero) that extends Zotero's menus, database status, and freshness signaling; and a documentation site (apps/docs) built with TanStack Router and Fumadocs on Cloudflare Workers. The architecture is service-oriented on the Obsidian side, with approximately 20 services wired in a service container (build.ts) using AsyncDisposableStack for lifecycle management. Shared packages (@zotlit/db, @zotlit/templates, @zotlit/protocol, @zotlit/obsidian-i18n, @zotlit/item-lookup) provide database queries over Zotero's SQLite via Drizzle ORM, template rendering with Eta/Liquid engines, a versioned HTTP wire protocol between Zotero and Obsidian, i18n Language Pack compilation, and a search index for item lookup. The codebase is well-tested with Vitest, employs modern TypeScript patterns, and maintains a comprehensive typed contract system for template data. Key workflows include: bidirectional citation linking (pandoc-style and wikilink), live preview of citations in reading view, annotation import from PDF/EPUB/snapshots with turndown HTML-to-Markdown conversion, Pandoc export with a bundled Lua filter and pinned WASM engine, batch note creation from collection selections, and a template workbench CLI for debugging and authoring templates. The system relies on Zotero's local SQLite database as the authoritative source, with a freshness detection mechanism (WAL checkpoint polling) to trigger updates in Obsidian.
This repository contains a Zotero plugin for formatting item metadata, specifically designed to ensure the existence, correctness, and accuracy of all items and fields in a Zotero library. The plugin includes a rule system with core abstractions expressed as rules, and uses large reference datasets bundled as assets. It is built on the zotero-plugin-template and zotero-plugin-scaffold toolchain and is designed to work with Zotero 8 & 9.
This repository is a comprehensive plugin and skill set for Claude Code (and compatible CLI assistants like Codex CLI and OpenCode), designed to transform the AI into a semi-automated research assistant for academic and software development workflows. It is not a standalone application but a configuration package that installs skills, commands, agents, hooks, and rules into the user's Claude environment. The architecture follows a skill-based pattern: each skill is a directory with a SKILL.md entry point, references, examples, and optional scripts, all consumed by the AI at runtime. The repository covers the full research lifecycleβideation, literature review (via Zotero MCP and arXiv APIs), experiment analysis, ML paper writing with conference-specific LaTeX templates (NeurIPS, ICLR, ICML, ACL, AAAI), reviewer response drafting, publication chart creation, and post-acceptance promotion. It also integrates deeply with Obsidian for project knowledge management and includes a meta-toolchain for developing and QA-ing skills themselves. While primarily an application configuration, it contains substantial research-oriented content (Kaggle competition analyses, citation verification workflows, writing pattern references), making it a hybrid tool that bridges software engineering and data science research. The codebase is actively maintained, well-documented, and demonstrates strong craftsmanship in its script utilities and hook infrastructure.