Literature reading and review support
Literature reading support takes three steps: embed abstracts to find related papers and build a reading list; have a model read the full texts you are entitled to use and extract research questions, methods, data and main results into a table, each with the sentence it came from, which code checks against the paper; then give the checked table to a stronger model to list agreements, contradictions and gaps. It helps you read and organize; it does not write your paper or produce references, and researchers check every item against the source. For 5,000 abstracts indexed and 200 full papers read a month, at live prices in each model’s cheapest group, model costs are about ¥23.88 a month.
Prices updated Nov 13, 2026, 6:08 PM
Monthly cost estimate
Assumptions: 5,000 new abstracts a month at about 400 tokens each; 200 full papers at about 20,000 tokens each, indexed as passages and extracted once at about 1,500 output tokens; 1,000 questions over the reading list, each with about 4,000 tokens of passages and a 500-token answer; and 30 comparisons, each reading about 30,000 tokens of table and writing about 3,000 tokens.
¥23.88per month
- Abstract embedding¥0.52
- Full-text indexing¥1.04
- Extraction per paper¥8.25
- Questions with citations¥9.75
- Comparison and outline¥4.32
The business problem
A review, a thesis proposal or a systematic review means reading dozens to hundreds of papers, putting each one’s methods, data and findings into a table and comparing which findings agree or conflict. The organizing alone takes a lot of time.
Asking a model "what research exists in this field" is risky: it can attach one paper’s findings to another, misread numbers, or invent papers and DOIs that do not exist.
It is safer to have the model work only on papers you provide: every finding comes with its source sentence, code checks the quotes and researchers review every item. The academic integrity line should be plain too: the model helps you read and organize, it does not ghostwrite papers or produce references, and whether and how AI tools may be used and declared is set by your university, journal and supervisor.
Recommended models
Recommended models are picked from the live catalog; prices are each model's cheapest group, updated Nov 13, 2026, 6:08 PM. Click a model to see every group's price.
Reading and extraction per paper
gemini-3.8-flashGoogle
input ¥1.5 / output ¥7.5 per 1M tokensStandard group
Reads each full paper, extracts fixed fields with their source sentences, and answers questions over the reading list. Full texts are long and input far exceeds output, so a low input price matters; when a paper is longer than the model’s context window, extract section by section and merge.
Comparison and outline
Claude Sonnet 5.5Anthropic
input ¥3.2 / output ¥16 per 1M tokensClaude Lite group
Reads only the checked comparison table, not the full texts, and lists agreements, contradictions and research gaps, citing the paper id in every sentence. There are few calls, but relating many papers to each other needs a mainstream or flagship model.
Reading-list search (Embeddings)
text-embedding-3-largeOpenAI
input ¥0.26 / output ¥0.26 per 1M tokensStandard group
Turns abstracts and full-text passages into vectors for finding related papers, clustering by topic and removing duplicates; with passages indexed, you can ask questions with citations as in the knowledge-base solution. Index and query one library with the same embedding model.
Reference architecture
- 1
Build the reading list
Export records (title, abstract, DOI) from literature databases, deduplicate by DOI, embed the abstracts, search for papers close to your research question and cluster them by topic; researchers decide what to read in full.
- 2
Prepare full texts
Work only with full texts you are entitled to use, such as open-access papers, papers lawfully downloaded from databases your university subscribes to and preprints from the authors; whether a database allows text mining is set by its terms and your library. Keep section headings and page numbers when converting PDFs to text, and convert scans first as in the document extraction solution.
- 3
Extract each paper
Extract fixed fields: research question, method, data and sample, main results (with numbers) and limitations, each with its source sentence; fields the paper does not report are marked "not reported", never guessed.
- 4
Check quotes in code
Code checks that every source sentence appears word for word in the full text, and fields that do not match are marked for a person to check; numbers and units always follow the paper.
- 5
Questions with citations
Split full texts into passages and index them; for each question, retrieve the relevant passages and have the model answer only from them, citing paper id and page, and say so when the passages do not cover it, as in the knowledge-base solution.
- 6
Compare and outline
Give the checked table to the comparison model to list agreements, contradictions and gaps, citing paper ids in every sentence. The review’s arguments, structure and text are yours to write, and references come from your reference manager, never from the model.
Cost estimate
Assumptions: 5,000 new abstracts a month at about 400 tokens each; 200 full papers at about 20,000 tokens each, indexed as passages and extracted once at about 1,500 output tokens; 1,000 questions over the reading list, each with about 4,000 tokens of passages and a 500-token answer; and 30 comparisons, each reading about 30,000 tokens of table and writing about 3,000 tokens.
| Item | Model | Usage assumed | Cost |
|---|---|---|---|
| Abstract embedding | text-embedding-3-large | 5,000 × 400 input tokens | ¥0.52 |
| Full-text indexing | text-embedding-3-large | 200 × 20,000 input tokens | ¥1.04 |
| Extraction per paper | gemini-3.8-flash | 200 × (20,000 input + 1,500 output tokens) | ¥8.25 |
| Questions with citations | gemini-3.8-flash | 1,000 × (4,000 input + 500 output tokens) | ¥9.75 |
| Comparison and outline | Claude Sonnet 5.5 | 30 × (30,000 input + 3,000 output tokens) | ¥4.32 |
| Total (per month) | ¥23.88 | ||
Calculated from live prices in each model's cheapest group, updated Nov 13, 2026, 6:08 PM.
Model usage only: database subscriptions, PDF conversion and the vector database are not included. Removing the reference list before extraction saves a good share of input tokens; scanned PDFs have to be converted to text first, as costed in the document extraction solution. Twice the papers read in full means roughly twice the matching lines.
Sample code
The model extracts fixed fields with the source sentence of each, code checks that every sentence appears word for word in the full text, and only rows that pass completely go to the comparison model. References always come from your own reference manager, not from the model.
import json
import os
import re
from openai import OpenAI
client = OpenAI(base_url="https://www.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"], max_retries=3)
FIELDS = ["research_question", "method", "data", "main_result", "limitations"]
SYSTEM = (
"You fill one row of a literature table from the paper below and nothing else. For each field give a "
"short value and the exact sentence of the paper it comes from. If the paper does not report a field, "
'use {"value": "not reported", "quote": ""}. Reply with JSON only: an object with the keys '
+ ", ".join(FIELDS) + ', each {"value": "", "quote": ""}.'
)
def squash(s):
return re.sub(r"\s+", " ", s or "").strip()
def extract(paper_id, text):
resp = client.chat.completions.create(
model="gemini-3.8-flash",
messages=[{"role": "system", "content": SYSTEM}, {"role": "user", "content": text}],
temperature=0,
)
raw = resp.choices[0].message.content
row = json.loads(raw[raw.find("{"): raw.rfind("}") + 1])
full = squash(text)
for f in FIELDS:
cell = row.get(f) if isinstance(row.get(f), dict) else {"value": "", "quote": ""}
if cell.get("value") == "not reported":
cell["check"] = "not_reported"
else:
# a value counts only if its sentence really is in the paper; everything else goes to a person
quote = squash(cell.get("quote"))
cell["check"] = "quote_found" if quote and quote in full else "by_hand"
row[f] = cell
return {"paper": paper_id, "model": resp.model, **{f: row[f] for f in FIELDS}}
def compare(rows, question):
"""Only rows whose quotes were all found are compared: the table is the source, not the model's memory."""
table = [{"paper": r["paper"], **{f: r[f]["value"] for f in FIELDS}}
for r in rows if all(r[f]["check"] != "by_hand" for f in FIELDS)]
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[
{"role": "system", "content": "Compare the papers in the table and nothing else. Put the paper id in brackets, "
"like [smith2024], after every statement. List agreements, contradictions and gaps. "
"Do not add papers, facts or references that are not in the table."},
{"role": "user", "content": "Question: " + question + "\n\nTable:\n" + json.dumps(table, ensure_ascii=False)},
],
)
return resp.choices[0].message.content
rows = []
for paper_id in ["smith2024", "li2025"]: # full texts you are entitled to use, reference lists removed
with open(f"papers/{paper_id}.txt", encoding="utf-8") as f:
rows.append(extract(paper_id, f.read()))
print(json.dumps(rows, ensure_ascii=False, indent=2)) # a researcher checks every row against the paper
print(compare(rows, "Does remote tutoring improve test scores?"))
# Reading list: embed abstracts with text-embedding-3-large and search them as in the knowledge-base solution.Try this with one key
Sign up, create an API key in the console, and put your base_url and key into the code above. For company purchasing or invoices, add our WeChat support JsnonoChat.

Scan the code or search the WeChat ID to add us
FAQ
Can the model write my literature review?
That is not what this setup does. The model helps you read and organize: extraction, comparison and finding sources; the review’s arguments, structure and text are your own. Whether and how AI tools may be used and declared is set by your university, journal and supervisor.
Do models invent references?
Yes. Listing literature from memory, a model can invent papers, authors or DOIs, or attach one paper’s findings to another. That is why the model here works only on full texts you provide, every item carries its source sentence checked in code, and references come only from your reference manager.
How accurate is the extraction?
There is no general accuracy figure; it depends on how papers are written and how the fields are defined. Common errors are taking results a paper cites from others as its own, misreading units and sample sizes, and numbers from the wrong table row. The quote check catches some; the rest needs a researcher’s review of every item.
Which papers can I process?
Full texts you are entitled to use, such as open-access papers, papers lawfully downloaded from databases your university subscribes to, and preprints from the authors. Whether a database’s terms allow text mining or uploading to third-party services is set by the database and your library; you need to confirm it, and we make no promises about it.
What does it cost per month?
For 5,000 abstracts indexed, 200 full papers read, 1,000 questions and 30 comparisons a month, the cheapest groups come to about ¥23.88. The number of questions, the length of the full texts and the number of papers read matter most.
What about scanned PDFs and figures?
Convert scans to text first as in the document extraction solution, then extract. Numbers in figures are the easiest to misread, so always check them against the original figure by hand.